【发布时间】:2011-08-09 14:36:36
【问题描述】:
我有一个菜单控件 (Menu1),我想根据我在数据库中存储的有关经过身份验证的用户的某些信息从菜单中添加/删除项目。我不确定如何从菜单控件访问特定菜单项并在运行时将其删除?
【问题讨论】:
-
任何答案都能解决您的问题! .. 等待您的反馈 =)
标签: asp.net vb.net menu navigation
我有一个菜单控件 (Menu1),我想根据我在数据库中存储的有关经过身份验证的用户的某些信息从菜单中添加/删除项目。我不确定如何从菜单控件访问特定菜单项并在运行时将其删除?
【问题讨论】:
标签: asp.net vb.net menu navigation
可以通过后面的代码访问 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:使其与问题中的数据更加一致
【讨论】:
我希望你更具体,但我知道 cmets 的通知在这里有点糟糕。所以如果你能准确地告诉我
我不确定如何访问 菜单中的特定菜单项 在运行时控制和删除它们?
A.删除项目:
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)
【讨论】:
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++;
}
}
【讨论】: