2013-09-26 6 views
0

У меня есть этот модуль в моем проекте, в котором у меня есть 2 gridviews. Один для Main MenuModule, а другой - для subMenu. Я создал список, так что, когда строка в моем модуле главного меню была проверена и у нее есть соответствующее подменю, она будет отображаться в SubMenu Gridview.Ввод списка в сеанс

Моя проблема заключалась в том, как поместить этот список в сеанс, чтобы я, когда я перехожу на другую страницу, а затем вернусь на эту страницу, 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(); 
      } 
     } 
+0

Почему вы хотите в сессии? Вы не хотите что-то менять? –

+0

он идет с государственным управлением bcoz, значения могут сохраняться даже после истечения срока действия страницы. – Sasidharan

+0

Я не хочу сохранять его в моей базе данных, я просто хочу временно его сохранить, чтобы, когда я вернусь на эту страницу перед отправкой, я могу см мое подменю GridView .. – theNoobie

ответ

0

Просто передайте список сеансу ["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(); 
       } 
      } 
+0

Привет, это будет так, если я передать его на странице загрузки охраняемую недействительным btnNext_Click (объект отправителя, ImageClickEventArgs е) { oList = Session [ «список»] Response.Redirect ("~ /Forms/RegReason.aspx "); } – theNoobie

+0

Да, но вам нужно восстановить представление, проверив текущего зарегистрированного пользователя или что-то ... после проверки просто передайте значение сеанса в сетку. – Sasidharan

+0

Привет, Спасибо за быстрый ответ! будет ли это так? Если я передам его на загрузку страницы? oList = Session ["list"] какой должен быть индекс? – theNoobie

0

просто назначьте свой список сессии просто и вызвать его на подменю странице.

на MainMenu странице

Session["list"]=oList; 

на подменю странице

List<oSubList> subList = (List<oSubList>) Session["list"]; 
Смежные вопросы