在我的.NET应用程序中,我需要为动态创建的asp:Table中的每一行添加一个复选框。 是否可以通过为每一行动态创建一个asp:CheckBox并以某种方式将其放在TableCell对象中来实现? (在这种情况下如何?)
或者我是否需要用其他东西替换asp:table控件,比如Repeater控件或GridView才能使它工作?
我正在寻找最快的解决方案,因为我没有太多时间。
提前致谢!
/ Ylva
答案 0 :(得分:2)
在aspx中:
<asp:Table id=T1 runat=server />
in cs:
TableCell tc;
foreach(TableRow tr in T1.Rows)
{
tr.Cells.Add(tc = new TableCell());
((IParserAccessor)tc).AddParsedSubObject(new CheckBox());
}
答案 1 :(得分:0)
你不想在服务器端(在Yossarian说的cs中)这样做。因为每次重新加载或刷新页面时,您都必须重新创建这些复选框,这意味着每次加载时都会出现新的复选框,这也意味着您的复选框控件信息将丢失,因为它们不在客户端,所以所有更新的信息由用户完成(选中复选框)将丢失,因此您希望能够找到检查的内容,除非您添加jquery并且它开始变得更复杂然后它需要
如果你正在使用网页,那么最好使用asp:Gridview web控件并将数据绑定到后面代码中的表,如下所示:
Gridview.Datasource=//ex:data;
Gridview.Databind();
如本页示例here
所示但是如果你使用的是MVC,那么你可以将它们添加到客户端代码中,形式如下:
<% using (Html.BeginForm("Presentation", "Home")) %>
<% { %>
<table id="Table" class="color" width="100%" border="1">
<colgroup width="3%" ></colgroup>
<colgroup width="15%"></colgroup>
<colgroup width="20%"></colgroup>
<colgroup width="15%"></colgroup>
<colgroup width="47%"></colgroup>
<thead>
<tr class="dxgvHeader_Glass">
<th id="CheckBox" class="style1" ><input type="checkbox" class="selectall" id="selectall" name="CheckBox" /></th>
<th id="DateTime" runat="server"></th>
<th id="Description" runat="server"></th>
</tr>
</thead>
<tbody >
<%try
{ %>
<% foreach (var SamAuditLog in ViewData.Model)
{ %>
<tr>
<td class="style1" align="center"><%=Html.CheckBox(""+data.ID) %></td>
<td><%= data.DateTime%></td>
<td><%= data.Description%></td>
</tr>
<% } %>
<%} %>
</tbody>