将列表放入会话中

本文关键字:会话 列表 | 更新日期: 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"];