在C#中构建菜单

时间:2011-08-12 19:18:50

标签: c# asp.net

这就是我所做的:

<asp:Menu
    id="Menu1"
    Orientation="Horizontal"
    Runat="Server">
    <StaticMenuStyle
        BackColor="#eeeeee" 
        BorderStyle="solid" 
        BorderColor="Black"
        BorderWidth="1" />
    <DynamicMenuStyle 
        BackColor="#eeeeee" 
        BorderStyle="solid" 
        BorderColor="Black"
        BorderWidth="1" />
</asp:Menu>

在背后的代码中:

if (!IsPostBack)
{
    DataSet dst = GetMenuData();
    foreach (DataRow masterRow in dst.Tables["Menu"].Rows)
    {
        if ((string)masterRow["parentitemid"] != "NULL" ||
            (string)masterRow["parentitemid"] != "")
        {
            MenuItem masterItem = new MenuItem((string)masterRow["parentitemid"]);
            Menu1.Items.Add(masterItem);
            foreach (DataRow childRow in masterRow.GetChildRows("Menu"))
            {
                MenuItem childItem = new MenuItem((string)childRow["ID"]);
                masterItem.ChildItems.Add(childItem);
            }
        }
    }
}

基本上,我正在尝试从数据库绑定菜单。但是我收到了这个错误:

  

无法将'System.DBNull'类型的对象强制转换为'System.String'。

这是我的数据库表:

   ID          parentitemid        text                Url
   1            NULL           folder1         /folder1
   2            folder1     WebForm1.aspx   /folder1/WebForm1.aspx
   3            folder1     WebForm2.aspx   /folder1/WebForm2.aspx
   6              null          folder3     /folder3
   7            folder3     WebForm1.aspx   /folder3/WebForm1.aspx
   8            folder3     WebForm2.aspx   /folder3/WebForm2.aspx
   9            folder3     WebForm3.aspx   /folder3/WebFomr3.aspx

那么,请你帮我填一下菜单。

1 个答案:

答案 0 :(得分:1)

在DataTable中检查空值时执行类似的操作

if(dataRow["colName"] != DBNull.Value) 
{ 
    // logic
}

类似的东西:

if(masterRow["parentitemid"] != DBNull.Value && 
    !string.IsNullOrEmpty(masterRow["parentitemid"].ToString())

有关详细信息,请参阅DBNull.Value Field