2013-08-23 22 views
1

我有一個asp.net列表框,它填充在Page_Load事件,如果它不是回發。每當用戶從asp.net列表框中選擇任何項目時,我需要根據從列表框中選擇多少個項目來加載usercontrols。我已經能夠加載多個控件;不過,我的問題是這些新增加的控件在回發時會變得糟糕。Dyvenically添加用戶控件在asp.net回發disapper

這裏是我的示例代碼

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); 

} 

所以我questons給你們,什麼是在asp.net web表單這樣實現邏輯的最佳選擇。

回答

0

它與PlaceHolder和動態添加的控件有關。

回答幾乎同樣的問題在這裏: http://forums.asp.net/t/1623719.aspx

基本上,everyting佔位符將在回傳丟失,您必須PreInit事件期間隱藏字段,請求重新添加回它。窗體或ViewState。

+0

如果您在此答案中包含了一些信息並將該鏈接用作輔助來源而非只包含鏈接,這將非常有用。 –

0

控制消失,因爲它是我們負責維護添加動態控件的狀態,您想試試內容位置holder