ASP.Net DataList中的幻像行

时间:2014-03-21 20:06:06

标签: asp.net webforms datalist

嗨大家好:我正在维护旧代码,我偶然发现了一个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,...)检查结果,并且在每一行之后,还有另一个具有单个空单元格的行。你有什么线索可能是什么原因吗?

1 个答案:

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