ASP.NET動的追加コントロールの一例

1971 ワード

1回目のクリックページには3つのLabelがあり、2回目のクリックは6つ、3回目のクリックは9つ、つまりクリックするたびに前回の状態で3つ追加します.
私の方法は、Sessionで前回の状態を保存することができます.1つの解法は以下の通りです.
Test.aspxキーコード:




1
2
3


a
b
c


A
B


Test.aspx.cs关键代码:


protected void Page_Load(object sender, EventArgs e)
{
if (Session["Panel1"] != null)
{
int index = this.Form.Controls.IndexOf(Panel1);
this.Form.Controls.RemoveAt(index);
Panel1 = Session["Panel1"] as Panel;
this.Form.Controls.AddAt(index, Panel1);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 3; i++)
{
Label label = new Label();
DropDownList ddl = this.FindControl("DropDownList" + (i + 1).ToString()) as DropDownList;
label.Text = ddl.SelectedValue;
Panel1.Controls.Add(label);
}
Literal br = new Literal();
br.Text = "
";
Panel1.Controls.Add(br);
Session["Panel1"] = Panel1;
}
ページが再送されると、コントロールツリーのPanel 1の位置をメモして削除し、最後に追加したPanel 1をSession変数から取得し、コントロールツリーの元の位置に追加し、その上で新しいLabelコントロールを追加し続けます.最後のButtonはテストのために使用され、2つの役割があります.1つは、追加された位置が正しいかどうかを確認するのに役立ち、2つは、空の再送時に前回の状態を維持できるかどうかを検出するために使用されます.