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编辑  收藏  举报

导航