C# 转发器显示错误的列内容

C# 转发器显示错误的列内容,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一个中继器显示订单确认。它首先绑定到使用实体框架代码生成的表。该表包含正确的信息,中继器正确显示所有信息,但我在下面粘贴的显示总计的部分除外 我相信这部分也可以,但数量不能。例如,如果我添加5个产品,它将只显示一个,但是如果我放置一个断点并在调试模式下运行代码,我会看到数量表中插入的值是5而不是1,因此表中的数量值插入正确,但中继器报告1 代码如下: <asp:Repeater ID="rptConfirmOrder" runat="server"> &

我有一个中继器显示订单确认。它首先绑定到使用实体框架代码生成的表。该表包含正确的信息,中继器正确显示所有信息,但我在下面粘贴的显示总计的部分除外

我相信这部分也可以,但数量不能。例如,如果我添加5个产品,它将只显示一个,但是如果我放置一个断点并在调试模式下运行代码,我会看到数量表中插入的值是5而不是1,因此表中的数量值插入正确,但中继器报告1

代码如下:

    <asp:Repeater ID="rptConfirmOrder" runat="server">
         <ItemTemplate>


                   <fieldset class = "OrderConfirmationFieldset"><legend class ="OrderDataLegend">Order Summary</legend>

                    <td align="left" width="60%" runat="server" id="Td25">
                        <asp:Label ID="lblQuantity" runat="server" Text="Quantity: " CssClass = "lblOrderConfirmation">
                        </asp:Label> <%# Eval("Quantity")  %>
                        <br />

                    </td>

                        <td align="left" width="60%" runat="server" id="Td26">
                            <asp:Label ID="lblProductName" runat="server" Text="Product Name: " CssClass = "lblOrderConfirmation">
                            </asp:Label><%# Eval("ProductName" ,"{0:c}" )  %>
                            <br />
                        </td>
                        <td align="left" width="60%" runat="server" id="Td27">
                            <asp:Label ID="lblProductPrice" runat="server" Text="Product price: " CssClass = "lblOrderConfirmation">
                            </asp:Label>  <%# Eval("ProductPrice" ,"{0:c}" )  %>
                            <br />
                        </td>
                        <td align="left" width="60%" runat="server" id="Td28">
                            <asp:Label ID="lblSubtotal" runat="server" Text="Subtotal: " CssClass = "lblOrderConfirmation">
                            </asp:Label>  <%# Eval("Subtotal" ,"{0:c}" )  %>
                            <br />
                        </td>

                        <td align="left" width="60%" runat="server" id="Td29">
                            <asp:Label ID="lblTotal" runat="server" Text="Total: " CssClass = "lblOrderConfirmation">
                            </asp:Label>  <%# Eval("Total" ,"{0:c}" )  %>
                            <br />
                        </td>
</ItemTemplate>
     </asp:Repeater>

订单摘要





有人能帮忙吗


提前谢谢你

我认为您可能需要在打开中继器之后添加标记,并在关闭中继器标记之前将其关闭。

您的中继器标记看起来不正确。 其内容如下:

<asp:Repeater ID="rptConfirmOrder" runat="server" OnItemDataBound="rptConfirmOrder_ItemDataBound">
    <ItemTemplate>
        // stuff
    </ItemTemplate>
</asp:Repeater>

谢谢你的回答,我的中继器确实包含标签,这是一个粘贴错误。还可能是什么?谢谢你的回答!这确实是一个粘贴错误,中继器确实包含标记,我将测试您的建议断言失败,但逻辑是正确的。问题是我使用Take(1)的linqtosql语句,但它没有得到最后一条记录,而是得到第一条记录。很高兴您找到了根本原因。要可靠地获取最后一个条目,请按日期对结果进行“降序排序”,并执行FirstOrDefault();请确保未缓存数据。
protected void rptConfirmOrder_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
      var dataItem = e.Item.DataItem as YOUR_ENTITY_TYPE;
      Debug.Assert(5 == dataItem.Quantity);
    }
}