2013-07-26 3 views
0

У меня есть несколько флажков, которые я добавил программно.Страница Asp.net с C#: Как сохранить список отмеченных флажков?

Когда у вас есть клик, у меня есть метод fire, который говорит, что если они отмечены, добавьте их в список, который я определил, и если они не отмечены, удалите их из списка.

Моя проблема в том, что каждый раз, когда я это делаю, список, кажется, воссоздается, потому что он становится пустым.

Редактировать:

Немного соответствующего кода.

protected void check_clicked(object sender, EventArgs e) 
    { 
     CheckBox me = ((CheckBox)sender); 
     MenuNode m = ((MySpecialEventArgs)(e)).theVar; 
     if (me.Checked == true) 
     { 
      me.BackColor = System.Drawing.Color.AliceBlue; 
      checkedIDs.Add(m.ID, m.ID); 
     } 
     else 
     { 
      me.BackColor = System.Drawing.Color.YellowGreen; 
      checkedIDs.Remove(m.ID); 
     } 


    } 

    protected void button_clicked(object sender, EventArgs e) 
    { 
     String checkedMenus = ""; 
     foreach (int menuID in checkedIDs.Values) 
     { 
      checkedMenus +="'"+ menuID + "'"; 
     } 
    //Do DB Stuff 
    } 
+0

Уход за предоставлением любого исходного кода? – fuzz

+0

Добавлен исходный код. Есть ли что-нибудь еще, что вы хотели бы увидеть? – Stottymod3

ответ

0

Одним из вариантов было бы сохранение списка в сеансе и использование свойства для его сохранения или извлечения. Пожалуйста, попробуйте:

protected List<int> CheckedIDs 
{ 
    get 
    { 
     List<int> checkedIDs = new List<int>(); 
     if (Session["CheckedIDs"] != null) 
     checkedIDs = (List<int>)Session["CheckedIDs"]; 
     return checkedIDs; 
    } 
    set 
    { 
     Session["CheckedIDs"] = value; 
    } 
} 

Изменить check_Clicked и button_clicked:

protected void check_clicked(object sender, EventArgs e) 
{ 
    CheckBox me = ((CheckBox)sender); 
    MenuNode m = ((MySpecialEventArgs)(e)).theVar; 
    List<int> checkedIDs = CheckedIDs; 
    if (me.Checked == true) 
    { 
     me.BackColor = System.Drawing.Color.AliceBlue; 
     checkedIDs.Add(m.ID, m.ID); 
    } 
    else 
    { 
     me.BackColor = System.Drawing.Color.YellowGreen; 
     checkedIDs.Remove(m.ID); 
    } 
    CheckedIDs = checkedIDs; 
} 

protected void button_clicked(object sender, EventArgs e) 
{ 
    String checkedMenus = ""; 
    List<int> checkedIDs = CheckedIDs; 
    for (int i=0; i < checkedIDs.Count ; i++) 
    { 
     checkedMenus +="'"+ checkedIDs[i].ToString() + "'"; 
    } 
    //Do DB Stuff 
} 

Надеется, что это помогает!

+0

Спасибо, отлично работает. – Stottymod3

+0

Добро пожаловать! – afzalulh

0

У вас есть способ создания флажка, завернутый в if! Page.IsPostBack? Вам не нужно хранить их в сеансе, если что-то я буду хранить тогда в ViewState.

Смежные вопросы