可以动态地将asp:CheckBox控件添加到TableCell吗?

时间:2009-03-09 14:17:49

标签: asp.net checkbox

在我的.NET应用程序中,我需要为动态创建的asp:Table中的每一行添加一个复选框。 是否可以通过为每一行动态创建一个asp:CheckBox并以某种方式将其放在TableCell对象中来实现? (在这种情况下如何?)

或者我是否需要用其他东西替换asp:table控件,比如Repeater控件或GridView才能使它工作?

我正在寻找最快的解决方案,因为我没有太多时间。

提前致谢!

/ Ylva

2 个答案:

答案 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>