2012-01-16 35 views
2

我試圖添加一些動態表單元素到我的asp頁面使用c#每當一個按鈕被點擊。該代碼正在工作,但它會覆蓋本身,而不是將面板,標籤和文本框一次單擊生成的元素放在前一次單擊中生成的元素之後。計數器由全局變量控制。我可能錯過了一些非常簡單的東西,但任何幫助都會很棒。 謝謝!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 2012-01-16 22:22:00

+0

感謝Chris,這裏有一個鏈接:http://mechanical-legs.com/samples/cs_screen.jpg。帶圓圈的是標籤表單元素,每次點擊按鈕都會更新。 – 2012-01-16 22:50:09

+0

我假設在「步驟3」旁邊應該有文本框和標籤 – ChrisF 2012-01-16 22:52:37

回答

1

每次單擊按鈕時,你會得到一個回傳。在後續的頁面加載時,asp.net沒有記錄您在事件處理程序中添加的以前的控件。您需要自己跟蹤它 - 在viewstate中 - 並在處理下一個回發之前通過查詢viewstate重新創建之前添加的頁面Init事件中的控件。如果你不初始化重新創建它們,它們將不能夠正確(例如,它們將不能夠回傳自己或以其他方式向頁的事件生命週期。)

這裏的一些信息: http://forums.asp.net/t/1186195.aspx/1