ポストバックでない場合、Page_Load イベントに入力される asp.net リストボックスがあります。ユーザーが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 フォームでこのようなロジックを実装するための最良のオプションは何ですか。