这就是我所做的:
<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
那么,请你帮我填一下菜单。
答案 0 :(得分:1)
在DataTable中检查空值时执行类似的操作
if(dataRow["colName"] != DBNull.Value)
{
// logic
}
类似的东西:
if(masterRow["parentitemid"] != DBNull.Value &&
!string.IsNullOrEmpty(masterRow["parentitemid"].ToString())
有关详细信息,请参阅DBNull.Value Field。