我仍然是ASP.NET的新手,但我发现自己陷入了一个不应该出现问题的问题。
现在我有一个包含此div的页面:
<div id="EditSurveySetID" class="EditSurveySet" runat="server">
<div class="cell">
<div class="cell_title">Survey Set(s)</div>
<table id="surveySetTableData" runat="server" style="margin: 10px;">
<tbody>
<tr>
<td class="form_labelSurveySet" style="width: 330px;">
<input type="button" value="-"> Survey Set 1:
<input id="EditSurveySetTitle" runat="server" style="width: 200px;" value="Netherlands">
</td>
<td>
<asp:DropDownList ID="DDLSurveySetSurveys" runat="server">
</asp:DropDownList>
<asp:Button ID="addAdditionalDDLColumns" runat="server" Text="+" />
</td>
</tr>
</tbody>
</table>
</div>
</div>
看起来像这样:
我希望用户按下+按钮(addAdditionalDDLColumns)。按下该按钮后,我想要一个新的表格行显示,其中包含相同的控件,因此在运行时,它在这一点上看起来像这样:
<div id="EditSurveySetID" class="EditSurveySet" runat="server">
<div class="cell">
<div class="cell_title">Survey Set(s)</div>
<table id="surveySetTableData" runat="server" style="margin: 10px;">
<tbody>
<tr>
<td class="form_labelSurveySet" style="width: 330px;">
<input type="button" value="-"> Survey Set 1:
<input id="EditSurveySetTitle" runat="server" style="width: 200px;" value="Netherlands">
</td>
<td>
<asp:DropDownList ID="DDLSurveySetSurveys" runat="server">
</asp:DropDownList>
<asp:Button ID="addAdditionalDDLColumns" runat="server" Text="+" />
</td>
</tr>
<tr>
<td class="form_labelSurveySet" style="width: 330px;">
<input type="button" value="-"> Survey Set 2:
<input id="Text1" runat="server" style="width: 200px;" value="Netherlands">
</td>
<td>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="+" />
</td>
</tr>
</tbody>
</table>
</div>
</div>
或者在图片中: 所以我看到的方式是,在+按钮点击事件上生成了一些新的HTML代码,以及一些控件(下拉列表,另一个具有相同功能的按钮+?),可能是文本字段而不是输入字段。
现在想到的问题:
我该怎么做?任何建议和提示都非常受欢迎!!
答案 0 :(得分:1)
您可以使用UpdatePanel并在代码隐藏中动态添加新的asp控件。
这可能很昂贵,因为这意味着每次用户点击“添加”按钮时你的应用程序都会回到服务器,但是我不确定你是如何在客户端严格实现这一点的。但是没有什么能阻止你使用asp.net在服务器端动态创建新的控件。
如果您想使用自定义HTML包围新控件,可以使用PlaceHolder组件并在回调期间将其替换为原始文本(您的HTML)。
答案 1 :(得分:1)
我建议您使用GridView 它提供了添加行的选项。它提供了一个Rows集合,因此您可以获取绑定到每一行的数据。
以下some examples可帮助您入门。
动态创建,添加和维护控件需要付出一些努力。你需要一个PlaceHolder并且必须添加控件。您必须为每个ID分配唯一ID,并使用它们来检索值。这必须在每个PostBack上完成 当你不觉得自己是asp.net的新手时试试这个。
答案 2 :(得分:0)
protected void Button1_Click(object sender,EventArgs e)
{
HtmlTableRow tr = new HtmlTableRow();
HtmlTableCell td = new HtmlTableCell();
Button btn=new Button();
btn.Text="gdfgd"; /* here u can create ur contol and add it in cell*/
td.Controls.Add(btn); /*add controls to colum*/
tr.Cells.Add(td); /*add column to row*/
surveySetTableData.Rows.Add(tr); /*ad row to table*/
}
而不是使用这个我也建议你使用gridview像nunespaqscal bcz dataretrival变得非常容易....在gridview