[英]Dymanically added user controls disapper on postback in asp.net
我有一個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網絡表單中實現這樣的邏輯的最佳選擇是什么。
它與PlaceHolder和動態添加的控件有關。
幾乎相同的問題的答案是在這里: http : //forums.asp.net/t/1623719.aspx
基本上,占位符中的所有內容都會在回發時丟失,並且您必須在PreInit事件期間從隱藏字段,Request.Form或ViewState重新將其添加回它。
控件消失是因為維護動態添加的控件的狀態是我們的責任,您想嘗試一下占位符 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.