2

我意识到这是一个奇怪/简单的问题。我有组成网格的 HTML(表格和行)。我需要生成的网格看起来与 HTML 完全一样,数据从DataTable.

我该怎么做呢?如果我用 a 替换 HTML,GridView结果看起来与我需要的不同。我是否创建一个吐出表格和行的自定义网格类?

澄清一下:我得到了一个 HTML 网格......

<div>
    <table>
        <tr>
            <td>row 1 col 1</td>
            <td>row 1 col 2</td>
        </tr>
        <tr>
            <td>row 2 col 1</td>
            <td>row 2 col 2</td>
        </tr>
    </table>
</div>

...我现在需要用表格中的数据填充,并保留原始 HTML。

4

3 回答 3

4

如果您想使用 ASP.Net 数据绑定功能,请使用Repeater。标记将如下所示:

<table>
    <thead>
         <tr>
             <th>Heading</th>
         </tr>
    </thead>
    <tbody>
         <asp:Repeater runat="server">
             <ItemTemplate>
                 <tr>
                     <td><%# Eval("SomeFieldName") %></td>
                 </tr>
             </ItemTemplate>
         </asp:Repeater>
    </tbody>
</table>

您还可以通过实例化表/行/单元格对象并将它们添加到页面、控件或父容器控件的控件集合中,在代码隐藏中手动构建标记。这往往很耗时,但在某些情况下它是一个有效的选项,例如当您希望拥有不易在中继器中表达的高度动态的内容时。

第三种选择是将服务器标记与客户端标记混合,例如

<table>
    <thead>
         <tr>
             <th>Heading</th>
         </tr>
    </thead>
    <tbody>
         <% foreach( var obj in someCollection ){ %>
             <tr>
                 <td><%= obj.Property %></td>
             </tr>
         <% } %>
    </tbody>
</table>

最后一个选项与ASP.Net MVC 视图中使用的Razor语法非常相似(尽管更冗长) 。

于 2013-01-08T18:37:07.143 回答
1

我认为你最好的选择是中继器。下方链接。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater(v=vs.100).aspx

于 2013-01-08T18:09:13.447 回答
0

另一种选择是使用带有 HTML 表设置的 ListView 作为 LayoutTemplate。

快速示例:

      <asp:ListView ID="MyListView" runat="server">                                        
            <LayoutTemplate>                                        
                <table id="Table1" cellpadding="1" width="100%" runat="server">                                        
                    <tr id="Tr1" runat="server">                                        
                        <th id="Th1" style="font-weight: bold; text-align: left" runat="server">                                        
                           Header1                                        
                        </th>                                        
                        <th id="Th2" style="font-weight: bold; text-align: left" runat="server">                                        
                            Header2                                         
                        </th>                                                                                                            
                    </tr>                                        
                    <tr runat="server" id="itemPlaceholder" />                                        
                </table>                                        
            </LayoutTemplate>                                        
            <ItemTemplate>                                        
                <tr id="Tr2" runat="server">                                        
                    <td style="text-align: left">                                        
                        <%# Eval("Field1")%>                                        
                    </td>                                        
                    <td style="text-align: left">                                        

                         <%# Eval("Field2")%>                                        
                    </td>                                      

                </tr>
            </ItemTemplate>
        </asp:ListView>
于 2013-01-08T23:11:35.347 回答