将列表放入会话中
本文关键字:会话 列表 | 更新日期: 2023-09-27 18:32:48
我的项目中有这个模块,其中有 2 个网格视图。一个用于主菜单模块,另一个用于其子菜单。我创建了一个列表,以便当选中主菜单模块上的行并且它具有相应的子菜单时,它将显示在子菜单网格视图中。
我的问题是如何将此列表放入会话中,以便当我导航到另一个页面然后返回此页面时,子菜单网格视图仍然存在。
这是我的列表代码。
protected void cbxSelect_CheckedChanged(object sender, EventArgs e)
{
SubMenuGrid.DataSource = null;
SubMenuGrid.DataBind();
Business.SubMenuModules sub = new Business.SubMenuModules();
List<oSubList> oList = new List<oSubList>();
int counter = 0;
foreach (GridViewRow nRow in gvModuleList.Rows)
{
Int32 intModID = Convert.ToInt32(nRow.Cells[0].Text);
CheckBox chkBx = (CheckBox)nRow.FindControl("cbxSelect");
if (chkBx.Checked == true)
{
counter = counter + 1;
var oModList = sub.GetAllMenuPerModuleID(intModID);
if (oModList.Count > 0)
{
foreach (var rec in oModList)
{
oSubList olist = new oSubList
{
ID = rec.ID,
ModuleID = rec.ModuleID,
Submenu = rec.Submenu,
Description = rec.Description
};
oList.Add(olist);
}
SubMenuGrid.DataSource = oList;
SubMenuGrid.DataBind();
}
}
只需将列表传递给session["list"]。
在页面加载时,检查用户的条件并将会话值分配给菜单。
protected void cbxSelect_CheckedChanged(object sender, EventArgs e)
{
SubMenuGrid.DataSource = null;
SubMenuGrid.DataBind();
Business.SubMenuModules sub = new Business.SubMenuModules();
List<oSubList> oList = new List<oSubList>();
int counter = 0;
foreach (GridViewRow nRow in gvModuleList.Rows)
{
Int32 intModID = Convert.ToInt32(nRow.Cells[0].Text);
CheckBox chkBx = (CheckBox)nRow.FindControl("cbxSelect");
if (chkBx.Checked == true)
{
counter = counter + 1;
var oModList = sub.GetAllMenuPerModuleID(intModID);
if (oModList.Count > 0)
{
foreach (var rec in oModList)
{
oSubList olist = new oSubList
{
ID = rec.ID,
ModuleID = rec.ModuleID,
Submenu = rec.Submenu,
Description = rec.Description
};
oList.Add(olist);
}
Session["list"]=oList;
SubMenuGrid.DataSource = oList;
SubMenuGrid.DataBind();
}
}
只需将列表分配给会话,然后在子菜单页面上调用它。
在主菜单页面上
Session["list"]=oList;
在子菜单页面上
List<oSubList> subList = (List<oSubList>) Session["list"];