2013-06-20 2 views
-1

Я создаю динамически флажки для всех из них с назначенным событием checkChanged, которое при обратной передаче я воссоздаю и все работает, кроме одной вещи;Почему размер списка не увеличивается.

  • Я должен сохранить значение отмеченных флажков в списке. Но кажется, что в каждом событии postBack (каждый раз, когда я устанавливаю флажок) элементы списка теряются, хотя myche является глобальной переменной типа List;

lblProba.Text + = "in if clause; element count =" + myche.Count.ToString();

дает мне каждый раз, когда я проверяю флажок

protected void checkChanged(object sender, EventArgs e) 
{ 
     CheckBox chk = (CheckBox)sender; 
     if (chk.Checked) 
     { 
      myche.Add(chk.InputAttributes["value"].ToString()); 
      lblProba.Text +="in if clause; element count="+ myche.Count.ToString(); 


     } 

     else 
     { 
      lblProba.Text += "enering else;element count:"+myche.Count.ToString(); 




     } 

      lblProba.Text += "Final length" + myche.Count.ToString(); 
      for (int t = 0; t < myche.Count; t++) 
     { 
      Session["chk"]+= myche[t]; 

     } 


} 

ответ

1

В веб-приложение, вы можете думать о каждом постбэка как ведет к совершенно новый старт вашего приложения. Он не запоминает никакого состояния, все объекты создаются так, как если бы вы впервые запускали приложение.

ASP.NET пытается скрыть этот факт, используя такие вещи, как ViewState и т. Д., Но тем не менее ваши серверные объекты не живут за пределами одного цикла запроса/ответа.

Для переноса состояния по нескольким запросам вы можете сохранить промежуточные значения в переменной Session.

0

Необходимо сохранить ваш список, например. в объекте Session, чтобы не потерять его при каждой обратной передаче.

1

Вам необходимо проверить на lifecycle of ASP.NET pages. Каждый раз, когда вы вызываете страницу, ASP.NET создает новый экземпляр страницы, загружает ее с любыми данными в Viewstate (если это обратная передача) и передает управление вашему событию Load. После того, как страница отправит ответ браузеру, экземпляр будет уничтожен.

ASP.NET управляет ViewState для статически созданных элементов управления автоматически. Вам нужно будет убедиться, что любые данные, необходимые для перестройки и заполнения ваших динамических элементов управления, сохраняются в ViewState и используются для их восстановления в вашем загруженном событии.

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