2012-01-16 16 views
2

ボタンをクリックするたびにc#を使用して動的フォーム要素をASPページに追加しようとしています。コードは機能していますが、前のクリックで生成された要素の後にワンクリックで生成されたパネル、ラベル、テキストボックスを配置するのではなく、上書きします。カウンタはグローバル変数によって制御されます。私はおそらく非常にシンプルなものを見逃しているだろうが、どんな助けも素晴らしいだろう。 ありがとう!C#を上書きする動的コントロール

protected void Button1_Click(object sender, EventArgs e) 
{ 

    Panel pnl = new Panel(); 
    pnl.ID = "Panel" + count.ToString(); 
    Panel1.Controls.Add(pnl); 

    TextBox tb = new TextBox(); 
    tb.ID = "Textbox" + count.ToString(); 
    pnl.Controls.Add(tb); 

    Label lbl = new Label(); 
    lbl.ID = "Label" + count.ToString(); 
    lbl.Text = "Label" + count.ToString(); 
    pnl.Controls.Add(lbl); 
    count++; 

} 

あなたがここに効果を見ることができます:

enter image description here

+0

あなたはあなたが見ているもののスクリーンショット(または少なくともスクリーンショットへのリンク)を投稿できますか? – ChrisF

+0

Chrisさん、ありがとうございます。リンクはhttp://mechanical-legs.com/samples/cs_screen.jpgです。各ボタンのクリックで更新されるラベルフォーム要素が丸で囲まれています。 –

+0

"ステップ3"の横にテキストボックスとラベルがあるはずです。 – ChrisF

答えて

1

を、ボタンがクリックされるたびに、あなたは、ポストバックを取得します。その後のページのロード時に、asp.netには、イベントハンドラで追加した以前のコントロールのメモリがありません。ビューステートでこれを自分自身で追跡し、次のポストバックが処理される前にビューステートを調べることで、ページのInitイベントで以前に追加されたコントロールを再作成する必要があります。あなたは初期でそれらを再作成しない場合は、彼らが正常に機能しません(例えば、彼らは自分自身をポストバックまたはその他のページのイベントのライフサイクルに貢献することができません。)

は、ここではいくつかのより多くの情報です: http://forums.asp.net/t/1186195.aspx/1

関連する問題