0

私は2つのグリッドビューを持つ私のプロジェクトにこのモジュールを持っています。1 つは Main MenuModule 用で、もう 1 つはサブメニュー用です。メインメニューモジュールの行がチェックされ、対応するサブメニューがある場合、サブメニューグリッドビューに表示されるようにリストを作成しました。

私の問題は、別のページに移動してからこのページに戻ったときに、SubMenu 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();
            }
        }
4

2 に答える 2

0

リストをセッションに割り当てて、サブメニューページで呼び出すだけです。

メインメニューページで

Session["list"]=oList;

サブメニューページに

List<oSubList> subList = (List<oSubList>) Session["list"];
于 2013-09-26T09:49:56.513 に答える
0

リストを 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();
                }
            }
于 2013-09-26T08:43:03.133 に答える