我有一个字典,字典为< int,List< CartItem>&gt ;,这个字典包含有关我的购物车项目的信息。我正在寻找一种方法来显示转发器或数据列表中的结果更好。我已经开始使用转发器而且卡住了
我想在转发器的列表中显示转发器中每个元素的信息
page.aspx.cs中的
void bindinfo()
{
ShoppingCart cart = ShoppingCart.GetShoppingCart();
RepeaterCustomerShoppingCarts.DataSource = cart.dictionaryShoppingCart;
RepeaterCustomerShoppingCarts.DataBind();
}
在page.aspx
中<asp:Repeater id="RepeaterCustomerShoppingCarts" onitemdatabound="RepeaterCustomerShoppingCarts_ItemDataBound" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="shopping-table">
<tr>
<th> </th>
<th>Merchant Name</th>
<th>Quantity</th>
<th>Total Amount</th>
<th> </th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="first"><asp:Image ID="MerchantLogo" runat="server" width="52" height="46"/></td>
<td>
<b><asp:Label ID="lblTitle" runat="server" Text=""></asp:Label></b>
<p> <asp:Label ID="lblDetails" runat="server" Text=""></asp:Label> </p>
</td>
<td>
<div class="dropdown">
<asp:Label ID="lblQuantity" runat="server" Text=""></asp:Label>
</div>
</td>
<td><b><asp:Label ID="lblTotalPrice" runat="server" Text=""></asp:Label> </b></td>
<td><asp:HyperLink ID="hlShopDetails" CssClass="remove" runat="server">More Details</asp:HyperLink></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
尝试显示信息的任何帮助和建议都会很棒。页面的目的是你可以拥有许多购物车,具体取决于不同的商家,你在这里显示它们比有一个更多细节的链接,它会带你到特定的购物车。
谢谢
答案 0 :(得分:2)
试试这个
protected void RepeaterCustomerShoppingCarts_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ItemType.AlternatingItem || e.Item.ItemType == ItemType.Item){
// Grab all your controls like this
var lblQuantity = e.Item.FindControl("lblQuantity") as Label;
var NestedRepeater = e.Item.FindControl("NestedRepeater") as Repeater;
// Get the current data
var data = (KeyValuePair<Int32, List<CartItem>>)e.Item.DataItem;
//Bind the values
lblQuantity.Text = data.Value.Count.ToString();
NestedRepeater.DataSource = data.Value;
NestedRepeater.DataBind();
}
}
标记看起来像这样。
<asp:Repeater id="RepeaterCustomerShoppingCarts" onitemdatabound="RepeaterCustomerShoppingCarts_ItemDataBound" runat="server">
<ItemTemplate>
<asp:Label id="lblQuantity" runat="server" />
<asp:Repeater runat="server" id="NestedRepeater">
<ItemTemplate>
<!-- whatever your controls -->
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
这里的事情是你在后面的代码中控制你的布局。在那里获取必要的控制和当前数据。然后就像正常情况一样进行绑定。
答案 1 :(得分:1)
而不是在字典上使用普通的Eval(“ColumnName”),你只需要做Eval(“value”)
你可以这样做。
<asp:Label ID="lblQuantity" runat="server" Text='<%#(Eval("key")=="Quantity" ? Eval("value") : "") %>' />