动态增加webforms中的文本框数量

时间:2009-11-05 12:31:08

标签: asp.net dynamic

我有一个包含2条记录ID和描述的数据库。

我想要做的是尝试将其绑定到表格,例如

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

因此,用户可以从下拉列表中选择一个ID,输入描述,然后单击旁边的添加按钮,该按钮将动态复制该块,以便他们可以输入任意数量的内容。在webforms中解决这个问题的最佳方法是什么? DetailsView控件?我不知道如何让它动态添加html块呢?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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

棘手的部分是访问动态创建的表中的数据,但只要在每个控件上设置一个可以绑定到数据的标识符,就不难做到。

答案 1 :(得分:0)

除了简单的CRUD表单之外,我还远离任何内置控件(即DetailsView,FormView),因为手动创建自己的数据输入表单并不需要花费太多精力。

动态地将控件添加到ASP.NET Webform(让它们在回发中工作)是一个非常棘手的方法,但是简而言之,你需要做类似的事情:

  1. 添加一个表服务器控件,用于存储动态行。
  2. 创建一个属性(存储在ViewState或ControlState中)以存储可用行数。
  3. 处理相应的“添加”按钮单击事件,增加计数属性并添加新的表格行和子控件。
  4. 在OnInit事件中,创建存储在count属性中的表行数。
  5. 动态创建的控件不会在回发中保留,因此您需要在页面OnInit方法的每个回发中创建它们。只要控件以正确的顺序重新创建并具有相同的ID,那么它们将在回发时成功重新填充。

    由于您是动态添加控件,因此可能需要将页面EnableEventValidation属性设置为false。