我有一个asp.net列表框,如果它不是回发,则填充在Page_Load事件中。每当用户从asp.net列表框中选择任何项目时,我需要根据从列表框中选择的项目加载用户控件。我已经能够加载多个控件;但是,我的问题是那些新添加的控件在回发时会消失。
这是我的示例代码
if (!this.IsPostback)
{
bindListBox();
}
private void bindListBox()
{
lstAgenyList .DataSource = GetAgenyList();
lstAgenyList.DataTextField = "Id";
lstAgenyList.DataValueField = "Name";
lstAgenyList.DataBind();
}
protected void lstAgenyList_OnSelectedIndexChanged(object sender, EventArgs e)
{
foreach(Item in lstAgenyList.items) {
if(item.Selected)
{
addControls(item.Text, item.Value);
}
}
}
private void addControls(string itemName, string itemValue)
{
var control = this.LoadControl("~/Controls/a.ascx");
control.id= itemName.Trim() + itemValue + "Controls_";
this.agenyListPlaceHolder.Controls.add(control);
}
所以我对你们有所了解,在asp.net web表单中实现这样的逻辑的最佳选择是什么。
答案 0 :(得分:0)
它与PlaceHolder和动态添加的控件有关。
回答几乎相同的问题在这里: http://forums.asp.net/t/1623719.aspx
基本上,占位符中的每个内容都会在回发后丢失,您必须在隐藏字段,Request.Form或ViewState的PreInit事件中将其重新添加回来。
答案 1 :(得分:0)
控件消失,因为我们有责任维护动态添加的控件的状态,您想尝试内容位置holder。