簡體   English   中英

在asp.net中動態添加的用戶控件分派器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM