【发布时间】:2013-03-07 10:53:56
【问题描述】:
我正在 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 中设计的表:-
【问题讨论】:
-
我根据猜测添加了一个答案。如果您发布异常并显示您在哪一行得到异常,这将有所帮助。您可以查看变量并查看添加失败的项目,尽管您只有 1 个 3 级子项目 (ID 311),但很容易猜到。
-
感谢大卫,提供您的信息,但我已经找到了解决方案,我已将其发布为我的答案。请参考。
-
既然你的解决方案就是答案,你可以接受那个:)
-
是的,我点击了好东西空心刻度线,但我无法将其标记为答案,因为我的声誉在 SO 中很低 :-( 但我可以在 2 天后这样做 :-)
标签: c# asp.net sql-server-2008 visual-studio-2008