嗨大家好:我正在维护旧代码,我偶然发现了一个ASP.Net WebForms页面,里面有一个DataList控件,如下所示:
<asp:DataList ID="DL" runat="server" OnItemDataBound="DLItemDataBound">
<HeaderTemplate>
<table class="retail-grid" style="border-collapse: collapse;">
<tr>
<th style="text-align: left;">Line #</th>
<th style="text-align: left;">Item Description</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label runat="server" ID="ItemID" Text='<%# DataBinder.Eval(Container.DataItem, "ItemID")%>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Quantity" Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>'></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList>
当页面显示时,我可以使用任何开发人员工具(Chrome DevTools,Firefox,...)检查结果,并且在每一行之后,还有另一个具有单个空单元格的行。你有什么线索可能是什么原因吗?
答案 0 :(得分:2)
嗯......我找到了错误的来源:这是我正在使用的控件。控件的HTML输出有很大的不同,例如:DataGrid,DataList或Repeater;虽然你可以使用这些控件中的任何一个获得表格,但使用它们的方式有很大不同。
在我发布的代码中,我应该使用Repeater,因为我正在明确地编写表结构的其余部分。
<asp:Repeater ID="DL" runat="server" OnItemDataBound="RepeaterItemDataBound">
<HeaderTemplate>
<table class="retail-grid" style="border-collapse: collapse;">
<tr>
<th style="text-align: left;">Line #</th>
<th style="text-align: left;">Item Description</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label runat="server" ID="ItemID" Text='<%# DataBinder.Eval(Container.DataItem, "ItemID")%>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Quantity" Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>'></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
有关更详细的说明,请查看文章Deciding When to Use the DataGrid, DataList or Repeater