在动态生成的菜单中获取SelectedItem的Id

时间:2014-10-10 14:52:11

标签: c# asp.net menu

我动态创建了一个菜单。

这是我表的结构:

MenuItemId      int     PrimaryKey
MenuItemName    nvarchar(50)
ParentId        int
NavigateURL     nvarchar(500)

以下是在Heirarchical结构中获取数据的C#代码:

private void GetMenuItems()
{
    string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
    SqlConnection con = new SqlConnection(cs);
    SqlDataAdapter da = new SqlDataAdapter("spGetMenuData", con);
    DataSet ds = new DataSet();
    da.Fill(ds);

    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        if (dr["ParentID"].ToString().Trim() == "")
        {
            MenuItem item = new MenuItem();
            item.Text = dr["MenuItemName"].ToString();
            item.NavigateUrl = dr["NavigateUrl"].ToString();

            foreach (DataRow drChild in ds.Tables[0].Rows)
            {
                if (drChild["ParentID"].ToString() == dr["MenuItemID"].ToString())
                {
                    GetChildItems(ds, drChild, item);
                }
            }

            Menu1.Items.Add(item);
        }
    }

}

private static void GetChildItems(DataSet ds, DataRow dr, MenuItem item)
{
    MenuItem childItem = new MenuItem();
    childItem.Text = dr["MenuItemName"].ToString();
    childItem.NavigateUrl = dr["NavigateUrl"].ToString();

    foreach (DataRow drChild in ds.Tables[0].Rows)
    {
        if (drChild["ParentID"].ToString() == dr["MenuItemID"].ToString())
        {
            GetChildItems(ds, drChild, childItem);
        }
    }

    item.ChildItems.Add(childItem);
}

这是我的Html:

<asp:Menu ID="Menu1" runat="server" DataSourceID="" BackColor="#B5C7DE" DynamicHorizontalOffset="2" Font-Names="Verdana"
    Font-Size="0.8em" ForeColor="#284E98" StaticSubMenuIndent="10px"  BorderStyle="Groove" BorderColor="WhiteSmoke"  DynamicMenuStyle-BorderStyle="Outset">
    <DynamicHoverStyle BackColor="Red" ForeColor="White" />
    <DynamicMenuItemStyle HorizontalPadding="15px" VerticalPadding="10px" />
    <DynamicMenuStyle BackColor="#99ff99" />
    <DynamicSelectedStyle BackColor="Green" />
    <StaticHoverStyle BackColor="Blue" ForeColor="White" />
    <StaticMenuItemStyle HorizontalPadding="10px" VerticalPadding="10px" />
    <StaticMenuStyle BackColor="#ff6699" />
    <StaticSelectedStyle BackColor="Green" />
</asp:Menu>

现在我想从该菜单中获取selectedItem的MenuItemId。

有人能告诉我怎样才能得到相同的结果?

感谢。

1 个答案:

答案 0 :(得分:0)

这应该这样做。

string s = Menu1.SelectedValuePath=ID;