Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将列表放入会话_C#_Asp.net_List_Session_Gridview - Fatal编程技术网

C# 将列表放入会话

C# 将列表放入会话,c#,asp.net,list,session,gridview,C#,Asp.net,List,Session,Gridview,我的项目中有这个模块,其中有两个GridView。一个用于主菜单模块,另一个用于其子菜单。我创建了一个列表,这样当我的主菜单模块上的一行被选中并且有相应的子菜单时,它将显示在子菜单Gridview上 我的问题是如何将此列表放入会话中,这样当我导航到另一个页面,然后返回到此页面时,子菜单Gridview仍将存在 这是我的清单代码 protected void cbxSelect_CheckedChanged(object sender, EventArgs e) { Su

我的项目中有这个模块,其中有两个GridView。一个用于主菜单模块,另一个用于其子菜单。我创建了一个列表,这样当我的主菜单模块上的一行被选中并且有相应的子菜单时,它将显示在子菜单Gridview上

我的问题是如何将此列表放入会话中,这样当我导航到另一个页面,然后返回到此页面时,子菜单Gridview仍将存在

这是我的清单代码

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();
            }
        }
protectedvoid cbxSelect\u CheckedChanged(对象发送方,事件参数e)
{
subnumgrid.DataSource=null;
subnumgrid.DataBind();
Business.submonummodules sub=新建Business.submonummodules();
List oList=新列表();
int计数器=0;
foreach(gvModuleList.Rows中的GridViewRow nRow)
{
Int32 intModID=Convert.ToInt32(nRow.Cells[0].Text);
复选框chkBx=(复选框)nRow.FindControl(“cbxSelect”);
if(chkBx.Checked==true)
{
计数器=计数器+1;
var oModList=sub.GetAllMenuPerModuleID(intModID);
如果(oModList.Count>0)
{
foreach(oModList中的var rec)
{
oSubList olist=新的oSubList
{
ID=记录ID,
ModuleID=rec.ModuleID,
子菜单=记录子菜单,
描述=记录描述
};
添加(oList);
}
submonugrid.DataSource=oList;
subnumgrid.DataBind();
}
}

只需将列表传递给会话[“列表”]。
在页面加载时,检查用户的条件,并将会话值分配给菜单

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();
                }
            }
protectedvoid cbxSelect\u CheckedChanged(对象发送方,事件参数e)
{
subnumgrid.DataSource=null;
subnumgrid.DataBind();
Business.submonummodules sub=新建Business.submonummodules();
List oList=新列表();
int计数器=0;
foreach(gvModuleList.Rows中的GridViewRow nRow)
{
Int32 intModID=Convert.ToInt32(nRow.Cells[0].Text);
复选框chkBx=(复选框)nRow.FindControl(“cbxSelect”);
if(chkBx.Checked==true)
{
计数器=计数器+1;
var oModList=sub.GetAllMenuPerModuleID(intModID);
如果(oModList.Count>0)
{
foreach(oModList中的var rec)
{
oSubList olist=新的oSubList
{
ID=记录ID,
ModuleID=rec.ModuleID,
子菜单=记录子菜单,
描述=记录描述
};
添加(oList);
}
会话[“列表”]=列表;
submonugrid.DataSource=oList;
subnumgrid.DataBind();
}
}

只需简单地将列表分配给会话,并在子菜单页上调用即可

在主菜单页面上

Session["list"]=oList;
在子菜单页上

List<oSubList> subList = (List<oSubList>) Session["list"];
List子列表=(List)会话[“List”];

为什么要将其保存在会话中?难道不想将更改保存到某个地方吗?他使用状态管理bcoz,即使页面过期,值也可以保留..我还不想将其保存在数据库中,我只想暂时存储它,以便在提交前返回该页面时,可以看到我的子菜单gridview..嗨,会是这样吗如果我将其传递到页面加载保护的void btnNext_Click(对象发送者,ImageClickEventArgs e){oList=Session[“list”]Response.Redirect(“~/Forms/RegReason.aspx”);}是的,它会,但你必须通过检查当前登录用户或其他东西来恢复视图..检查后,只需将会话值传递给网格..嗨,感谢您的快速响应!如果我在页面加载时传递它,会是这样吗?oList=session[“list”]索引应该是什么?我如何将值传递给网格?像oList=session[“list”]?不,您只需从其他页面给出响应。重定向(“~/Forms/RegReason.aspx”);然后在RegReason页面加载中,给出以下代码。.subnumgrid.DataSource=session[“list”];subnumgrid.DataBind();