我有一个菜单控件(Menu1),我想根据我存储的有关数据库中经过身份验证的用户的某些信息,从菜单中添加/删除项目。我不确定如何从菜单控件访问特定菜单项并在运行时删除它们?
答案 0 :(得分:2)
可以通过后面的代码访问ASP.NET菜单。例如,在标记中声明的菜单ID为“Menu1”,可以这样访问:
foreach (MenuItem item in Menu1.Items) {
if (item.NavigateUrl.Contains(pageName)) {
item.Selected = true;
item.Text = "customText";
}
// ...
}
在该示例中,根据菜单所在的当前页面选择当前选择的菜单项。同样,Items集合可用于添加或删除单个菜单项。 注意,在菜单 items 上,ChildItems集合可用于更改子菜单项集合。
更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.items.aspx
@Edit:使其与问题中的数据更加一致
答案 1 :(得分:0)
我希望你更具体,但我知道评论通知在这里很糟糕。所以,如果你能准确地告诉我
我不确定如何访问 菜单中的特定菜单项 控制并在运行时删除它们?
:一种。删除项目:
Menu1.Items.Remove(Menu1.FindItem("Jobs"))
<强> B中。添加项目:
Menu1.Items.Add(new MenuItem("News"))
或者使用它来指定所需的 新添加项目的属性:
MenuItem item = new MenuItem()
item.NavigateUrl =""
item.Text = "Child Test"
Menu1.Items.Add(mnuTestChild)
答案 2 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
con.ConnectionString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString;
string selectCmd = "Select * from Pages where Status='"+1+"'";
SqlDataAdapter dap = new SqlDataAdapter(selectCmd,con);
DataSet ds = new DataSet();
dap.Fill(ds);
if (!Page.IsPostBack)
{
int x = 0;
string parent_id = "";
foreach (DataRow dr in ds.Tables[0].Rows)
{
parent_id = dr[0].ToString();
Menu1.Items.Add(new MenuItem(dr["Title"].ToString(), dr["URL"].ToString(), dr["ID"].ToString()));
}
x++;
}
}