#c# #asp.net #viewstate
#c# #asp.net #viewstate
Вопрос:
На моей странице есть элемент управления button.
При нажатии кнопки listbox добавляется на панель страницы.
Проблема в том, что при первом щелчке появляется список, при втором или более щелчках ничего не происходит, отображается только первое поле списка.
Я знаю, что проблема, вероятно, связана с состоянием просмотра, но я понятия не имею, где исправить код?
public partial class _default : System.Web.UI.Page
{
List<ListBox> myList;
protected void Page_Load(object sender, EventArgs e)
{
myList = new List<ListBox>();
Button1.Click = Add_ListBox1;
}
public void Add_ListBox1(object sender, EventArgs e)
{
ListBox temp_listBox = new ListBox();
myList.Add(temp_listBox);
Panel1.Controls.Add(temp_listBox);
}
}
Комментарии:
1. Ваш вопрос просто сбивает с толку. Именно то, что вы хотите сделать ?. «Я знаю, что проблема, вероятно, связана с состоянием просмотра, но я понятия не имею, где исправить код?» Здесь, где вы передаете переменную viewstate?. И в соответствии с вашим кодом. Вы получите только один список. Вы хотите, чтобы при каждом нажатии появлялось больше списка?
2. Да, при каждом нажатии добавляется новый LsitBox
Ответ №1:
Вам нужно понимать asp.net жизненный цикл страницы http://msdn.microsoft.com/en-us/library/ms178472 (v= против 85).aspx. При каждом нажатии кнопки вся страница будет воссоздана заново, поэтому ваша панель будет пустой. Затем обрабатывается обработчик события нажатия кнопки, и на панели добавляется только поле списка.
Возможное решение вашей проблемы определено здесь http://www.codeproject.com/Articles/502251/How-to-create-controls-dynamically-in-ASP-NET-and .
Ответ №2:
почему бы вам не попробовать этот код, поскольку вы сказали, что проблема с состоянием просмотра… если это так, это должно сработать..
public partial class _default : System.Web.UI.Page
{
List<ListBox> myList;
protected void Page_Load(object sender, EventArgs e)
{
myList = new List<ListBox>();
Button1.Click = Add_ListBox1;
}
public void Add_ListBox1(object sender, EventArgs e)
{
int count = 1;
if (ViewState["Clicks"] != null)
{
count = (int)ViewState["Clicks"] 1;
ListBox temp_listBox = new ListBox();
myList.Add(temp_listBox);
Panel1.Controls.Add(temp_listBox);
}
ViewState["Clicks"] = count;
}
protected void Button1_Click(object sender, EventArgs e)
{
Add_ListBox1(e,e);
}
}