Repeater显示错误的列内容

时间:2014-04-03 18:56:20

标签: c# asp.net repeater

我有一个转发器来显示订单确认。它首先绑定到使用Entity Framework代码生成的表。该表包含正确的信息,转发器显示所有信息,除了我显示下面粘贴的总数的部分。

我相信这部分也可以,但数量不行。例如,如果我添加5个产品,它将只显示一个,但如果我放置一个断点并且我在调试模式下运行代码,我看到在Quantity表中插入的值是5而不是1,所以表上的Quantity值插入正确,但转发器报告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>

任何人都可以提供帮助吗?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您可能需要添加&lt; itemtemplate&gt;在打开转发器之后标记并在关闭转发器标记之前将其关闭。

答案 1 :(得分:0)

您的转发器标记看起来不正确。 如下:

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

如果你有这种方式,这是一个粘贴错误,那么就忘记数据库/实体等中的值。

您可以通过点击行数据绑定事件来准确验证绑定的值,如下所示。

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);
    }
}