Asp.net 2.0 menu控件的用法
其实Menu的用法和TreeView的用法十分相像。先看代码吧!
在代码页上添加如下代码:
//获取数据
public DataSet GetData()
{
//创建SQL连接
SqlConnection myConnection=new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlDataAdapter myDataAdapter = new SqlDataAdapter("SELECT [Name], [ID], [FatherID] FROM [Board] ORDER BY [FatherID], [ID]", myConnection); //这里红色的SELECT语句根据自己的需要改变吧
DataSet myDataSet = new DataSet();
try
{
myConnection.Open();
myDataAdapter.Fill(myDataSet);
}
finally {
myConnection.Close();
}
//返回一个DataSet,以便后面绑定数据使用
return myDataSet;
}
//创建Menu的根节点
public void BindMenuItem(Menu menu)
{
//这里的GetData()返回刚才的DataSet
DataTable myDataTable = GetData().Tables[0];
//红色部分根据自己的需要填写吧.我这里将数据库内FatherID为-1的记录作文Menu的根节点.
DataRow[] rowList = myDataTable.Select("FatherID='-1'");
if (rowList.Length <= 0) return;
//新建一个MenuItem,也就相当于TreeView的Node
MenuItem menuItem = new MenuItem();
menuItem.Text = rowList[0]["Name"].ToString();
menuItem.Value = rowList[0]["ID"].ToString();
menu.Items.Add(menuItem);
CreateChildNode(menuItem, myDataTable);
}
//使用递归创建子节点
private void CreateChildNode(MenuItem fMenuItem, DataTable dataTable)
{
//红色部分还是自己填写吧,意思是在所有的节点中,选择父节点ID为某个值的节点
DataRow[] rowList=dataTable.Select("FatherID='"+fMenuItem.Value+"'");
foreach (DataRow row in rowList){
MenuItem menuItem=new MenuItem();
menuItem.Text=row["Name"].ToString();
menuItem.Value=row["ID"].ToString();
fMenuItem.ChildItems.Add(menuItem);
//递归,将刚才生成的menuItem作为根节点,继续插入它的子节点
CreateChildNode(menuItem,dataTable);
}
}
最后在Page_Load里面加入BindMenuItem()就行了
posted on 2011-04-16 18:37 Osiris4Net 阅读(395) 评论(0) 编辑 收藏 举报