我的页面有一个按钮控件。
单击该按钮时,列表框将添加到页面面板中。
问题是,在第一次点击时出现一个列表框,在第二次或更多次点击时没有任何反应,只显示第一个列表框。
我知道问题可能在于viewstate,但我不知道在哪里修复代码?
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);
}
}
答案 0 :(得分:1)
您需要了解asp.net页面lifecyle http://msdn.microsoft.com/en-us/library/ms178472(v=vs.85).aspx。在每个按钮上单击将重新创建整个页面,因此您的面板将为空。然后处理按钮单击事件处理程序,并在面板中添加一个列表框。
此处定义了问题的可能解决方案http://www.codeproject.com/Articles/502251/How-to-create-controls-dynamically-in-ASP-NET-and。
答案 1 :(得分:0)
为什么不试试这段代码 正如你所说的viewstate问题...如果它应该工作..
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);
}
}