2009-04-10 65 views
3

我已經爲我的asp.net頁面以下要求:如何在ASP.NET中動態添加文本框?

  1. 用戶可以通過點擊鏈接頁面的動態添加一個文本框的「添加新類別」超級鏈接

  2. 他點擊提交按鈕在頁面A並被重定向到頁面B.

  3. 當他點擊此頁面上的頁面鏈接時,他添加的文本框應該被保留。

有人可以幫我解決這個問題嗎?

感謝您的幫助!

回答

3

在ButtonClick方法中寫入。

TextBox tb = new TextBox(); 

Parent.Controls.Add(tb); 

家長是您要添加的文本框,例如面板的控制。您可以查看this resource

希望它有幫助。

+0

應當注意的是,這必須是在Init事件之前或期間完成,或者ViewState不會跟蹤對控件的更改。 – FlySwat 2009-04-10 15:33:32

3

動態添加用戶控件非常簡單。但在這種情況下,我認爲你不需要這樣做,而應該考慮在其中創建一個帶有文本框的中繼器,並且當用戶單擊添加類別時,將一個項目添加到中繼器數據源。

這樣你就可以同時處理控件創建和狀態持久化。

0

正如其他人所說的動態添加文本框是相當直接的,只需創建文本框並將其添加到控件集合,無論您需要它顯示。然後,您需要存儲此用戶獲取此附加文本框的信息。假設這是長期的,您需要將這些信息存儲在後端存儲中。無論何時構建頁面,都需要先閱讀商店信息以查看要創建的文本框。

我會建議如下做。在Onload事件中,如果您之前沒有這樣做,請從數據庫中加載動態信息。將所有必要的控件添加到頁面並將這些信息存儲在視圖狀態中。在任何後續回發中,從視圖狀態讀取信息以添加其他控件。這將使您無需在每次回發時不斷從數據庫中讀取數據。

0

處理動態用戶控件可能是一個痛苦的屁股。

作爲我遵循的經驗法則,無論何時你創建一個動態用戶控件,那麼你必須設置它的ID,以便ASP.net可以在回發時重新分配它,並且在回發後保留控件值,你應該重新加載你的用戶控制Page_Init事件。

希望這有助於。

1

動態創建文本框:

假設你有網頁這樣enter image description here

,當你進入框「1」,然後點擊添加按鈕,輸出會像下方顯示一個文本框 .. 我設計了這個樣子, enter image description here

我有一個文本框和佔位符,用於顯示文本框動態.. 添加按鈕雙擊......在btnadd_click,你必須WRI TE以下代碼

保護無效btnadd_Click(對象發件人,EventArgs的) {

int i; 
     for (i = 0; i < Convert.ToInt32(txtno.Text); i++) 

    { 

     TextBox txtbox = new TextBox(); 
     phtxt.Controls.Add(txtbox); 

     phtxt.Controls.Add(new LiteralControl("<br>")); 

    } 

    } 

調試它...和輸出是, enter image description here