2009-11-05 57 views
0

我有一個數據庫有2個記錄Id和說明。動態增加webforms中的文本框數量

我想要做的就是儘量把它綁定到一個表,以便例如

<tr> 
    <drop down select list with ids available> <textbox> 
</tr> <add button> 

因此,用戶可以選擇從下拉列表中選擇一個ID,輸入一個描述,然後點擊旁邊的添加按鈕這將動態地複製該塊,以便他們可以輸入儘可能多的數據。在webforms中最好的方法是什麼? DetailsView控件?我不知道如何使它動態添加html塊?任何幫助,將不勝感激。

回答

0

僞代碼:

foreach description 
    create new tablerow 
    create a table cell in the row with the description as a label 
    create a table cell in the row with the id dropdown as a combobox 
    add the tablerow to the table.rows collection 

棘手的部分是在訪問你的動態創建的表中的數據,但你設定每個控件的標識符,可以綁回到它應該不難,只要做到你的數據。

+0

我希望我能做到內嵌代碼像MVC,但這是WebForms和我不能做一個表內的代碼塊:(除非其自身內部 – David 2009-11-05 12:36:55

0

除了簡單的CRUD表單之外,我會遠離任何內置的控件(即DetailsView,FormView),因爲手動創建自己的數據輸入表單不需要太多的工作。

動態地將控件添加到一個ASP.NET網絡表單(並讓它們工作在回發)是相當棘手的一個來得到正確的,但在短期,你需要做的是這樣:

  1. 添加表服務器控件將存儲您的動態行。
  2. 創建一個屬性(存儲在ViewState或ControlState中)以存儲可用的行數。
  3. 處理相應的「添加」按鈕單擊事件,增加count屬性並添加新的表格行和子控件。
  4. 在OnInit事件中,創建存儲在count屬性中的錶行數。

動態創建的控件不會在回發中持久化,因此您需要在頁面OnInit方法期間的每次回發中創建它們。只要控件按照正確的順序和相同的ID重新創建,那麼它們將在回發中成功重新填充。

因爲你動態地添加控件,您可能需要EnableEventValidation屬性設置頁面爲false。