好的,下面是从数据库表中动态填充菜单项的代码。 现在我想要做的是将“PageHeader”从数据库保存到会话状态,以便我可以使用这些会话值来检查用户在页面上的授权 - 加载不同的内容页面。 现在既然每个用户都有不同的号码。授权页面,所以没有。会话因用户而异。这些会话的值将与内容页面的页面加载上的 PageHeader 变量匹配。
private void GetMenu()
{
DataTable dt = new DataTable();
dt = bll.master_Menu_Bar(en);
DataRow[] drow = dt.Select();
foreach (DataRow dr in drow)
{
MenuBar.Items.Add(new MenuItem(dr["PageHeader"].ToString(), dr["PageId"].ToString(), "", dr["PageUrl"].ToString()));
}
上面代码中使用的业务逻辑层方法是:
public DataTable master_Menu_Bar(EntityLayer.Entity en)
{
return dll.ReturnSingleTable("Select PageHeader,PageUrl from authorized_view where Emp_Mobile="+ en.cal_EmpMobile);
}
答案 0 :(得分:1)
您可以制作list of string
和put your menu items in there
,然后将该字符串列表放入会话
稍后只从会话中检索。
foreach (DataRow dr in drow)
{
//add items to list here
}
//make menu from that list
//put that in session or view state
如何使其存储页面ID,页面URL和页面标题
首先我们声明一个类
public Class MenuHelper
{
public String PageId {get; set;}
public String PageHeader {get; set;}
public String PageUrl {get; set;}
}
我们如何做到这一点
列出menulist = new List();
DataTable dt = new DataTable();
dt = bll.master_Menu_Bar(en);
DataRow[] drow = dt.Select();
foreach (DataRow dr in drow)
{
MenuHelper helperItem = new MenuHelper();
helperItem.PageId = dr["PageId"].ToString();
helperItem.PageHeader = dr["PageHeader"].ToString();
helperItem.PageUrl = dr["PageUrl"].ToString();
//can add menu here or not
MenuBar.Items.Add(new MenuItem(dr["PageHeader"].ToString(), dr["PageId"].ToString(), "", dr["PageUrl"].ToString()));
//Add items to list
menulist.Add(helperItem);
}
//Add list to session or view state
Session["MenuItems"] = menulist;
//When retrieving list do like this
List<MenuHelper> menulist = (List<MenuHelper>)Session["MenuItems"];
答案 1 :(得分:0)
这是我做的事情的简单代码..
private void GetMenu()
{
//fetches data from business logic layer
DataTable dt1 = new DataTable();
dt1 = bll.Master_Menu_Bar(en);
//session so that the masterpage doesnt interact with database on everypostback
Session["dataTable"] = dt1;
DataTable dt=new DataTable();
dt=(DataTable)Session["dataTable"];
//session for page id's of the menuitems which will be checked for authorization at page loads of every page.
int i = 0;
while (i < dt.Rows.Count)
{
int[] PageId = new int[dt.Rows.Count];
PageId[i] = Convert.ToInt32(dt.Rows[i][2]);
Session["PageId" + i] = PageId[i];
i++;
}
//A session to keep count of the no. of menu items , this session is also used at page loads of pages as condition of if statement
Session["count"] = dt.Rows.Count;
DataRow[] drow = dt.Select();
foreach (DataRow dr in drow)
{
MenuBar.Items.Add(new MenuItem(dr["PageHeader"].ToString(), dr["PageId"].ToString(), "", dr["PageUrl"].ToString()));
}