C# Asp.Net添加了一个额外的td

C# Asp.Net添加了一个额外的td,c#,sql,asp.net,C#,Sql,Asp.net,我正在尝试使用ASP:DataList来显示数据源中的数据。一切正常,除了我让ASP在没有列的情况下添加一个额外的列。标题模板和项目模板如下所示 <asp:DataList runat="server" ID="xTable" DataKeyField="PK_PurchaseID" DataSourceID="SqlDataSource1" RepeatLayout="table" CssClass="table"> <HeaderTemplate>

我正在尝试使用ASP:DataList来显示数据源中的数据。一切正常,除了我让ASP在没有列的情况下添加一个额外的列。标题模板和项目模板如下所示

<asp:DataList runat="server" ID="xTable" DataKeyField="PK_PurchaseID" DataSourceID="SqlDataSource1" RepeatLayout="table" CssClass="table">
        <HeaderTemplate>
            <td>PuchaseID</td>
            <td>Last Name</td>
            <td>First name</td>
            <td>Address1</td>
            <td>Email Sent</td>
        </HeaderTemplate>
        <ItemTemplate>
            <td><%# Eval("PK_PurchaseID") %></td>
            <td><%# Eval("LastName") %></td>
            <td><%# Eval("FirstName") %></td>
            <td><%# Eval("Address1") %></td>
            <td><%# Eval("[Email Sent]") %></td>
        </ItemTemplate>
    </asp:DataList>

蒲公英苷
姓
名字
地址1
发送电子邮件
和是创建的DOM对象。我希望表中有5列,但它被呈现为6列

<table class="table" id="xTable" style="border-collapse: collapse;" cellspacing="0">
<tbody><tr>
    <td>
            <td>PuchaseID</td>
            <td>Last Name</td>
            <td>First name</td>
            <td>Address1</td>
            <td>Email Sent</td>

</tr><tr>
    <td>
            <td>3</td>
            <td>Albdddim</td>
            <td>James </td>
            <td>1----63rd Ave.</td>
            <td>true</td>

</tr>

蒲公英苷
姓
名字
地址1
发送电子邮件
3.
Albdddim
詹姆斯
1----第63大道。
真的

我无法理解为什么要创建初始列。我改变了CSS,甚至删除了它,结果仍然一样。我已经验证了SQL只返回5列(即使它返回的多多少少不会有什么区别)


感谢Chris,HeaderTemplate和ItemTemplate是td元素,因此它会自动创建td。如果你这样做

<asp:DataList runat="server" ID="xTable" DataKeyField="PK_PurchaseID" DataSourceID="SqlDataSource1" RepeatLayout="table" CssClass="table">
    <HeaderTemplate>
        PuchaseID
        <td>Last Name</td>
        <td>First name</td>
        <td>Address1</td>
        <td>Email Sent</td>
    </HeaderTemplate>
    <ItemTemplate>
        <%# Eval("PK_PurchaseID") %>
        <td><%# Eval("LastName") %></td>
        <td><%# Eval("FirstName") %></td>
        <td><%# Eval("Address1") %></td>
        <td><%# Eval("[Email Sent]") %></td>
    </ItemTemplate>
</asp:DataList>

蒲公英苷
姓
名字
地址1
发送电子邮件

它将把购买ID放在创建的第一个td中,然后按照您的需要填写表格。

这是因为模板呈现自己的
{content}
。这就是为什么会有两个
。最好使用GridView。它的桌子效果更好。是的,这很有效。非常感谢。不过,这让代码看起来很奇怪,糟糕的是,MS不知道用户可能会在模板开始时使用td元素,然后将其合并到代码中。如果使用VDWWD在评论中说的gridview,效果会更好。