我在 asp.net 中创建一个数据驱动的动态菜单,使用 sql server 2008 R2 作为我的数据库。第一级的父节点和子节点工作得很好。但是子节点下面有另一个子节点,应用程序产生异常。我的问题的 c# 代码如下:
public partial class LeaveManagementSystemMasterPage : System.Web.UI.MasterPage
{
SqlConnection conn;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
getMenu();
}
}
private void getMenu()
{
Connect();
conn.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string sqlQuery = "select * from menu";
SqlDataAdapter da = new SqlDataAdapter(sqlQuery, conn);
da.Fill(ds);
dt = ds.Tables[0];
DataRow[] rowParent = dt.Select("ParentID=" + 0);
DataRow[] rowChild = dt.Select("ParentID>"+0);
//populating the first level of the menu
foreach (DataRow dr in rowParent)
{
Menu1.Items.Add(new MenuItem(dr["MenuName"].ToString(),dr["MenuID"].ToString(),"",""));
}
//populating the children in menu
foreach (DataRow dr in rowChild)
{
MenuItem child = new MenuItem(dr["MenuName"].ToString(), dr["MenuID"].ToString(), "", "");
Menu1.FindItem(dr["ParentID"].ToString()).ChildItems.Add(child);
}
conn.Close();
}
public void Connect()
{
string conStr="Data Source=HO-0000-LAP; Initial Catalog=LeaveManagementSystem; Integrated Security=true";
conn = new SqlConnection(conStr);
}
}
这是我在 sqlserver 2008 中设计的表:-