ASP中的幻影行.净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,…)检查结果,并且在每一行之后,还有另一个具有单个空单元格。你知道原因是什么吗?

嗯…我已经找到了错误的根源:这是我正在使用的控件。控件的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>

有关更详细的解释,请查看文章决定何时使用数据网格、数据列表或中继器

相关内容

  • 没有找到相关文章

最新更新