首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字典绑定到中继器asp.net 4

将字典绑定到中继器asp.net 4
EN

Stack Overflow用户
提问于 2012-02-02 05:24:34
回答 2查看 6.3K关注 0票数 1

我有一本字典,格式是Dictionary,这本字典包含了我的购物车物品的相关信息。我正在寻找一种在中继器或数据列表中显示结果的方法。我开始用中继器,结果卡住了。

我想在转发器的列表中显示转发器中每个元素的信息

在page.aspx.cs中

代码语言:javascript
运行
复制
void bindinfo()
{
        ShoppingCart cart = ShoppingCart.GetShoppingCart();
        RepeaterCustomerShoppingCarts.DataSource = cart.dictionaryShoppingCart;
        RepeaterCustomerShoppingCarts.DataBind();
}

在page.aspx中

代码语言:javascript
运行
复制
<asp:Repeater id="RepeaterCustomerShoppingCarts" onitemdatabound="RepeaterCustomerShoppingCarts_ItemDataBound" runat="server">
            <HeaderTemplate>
                 <table width="100%" border="0" cellspacing="0" cellpadding="0" class="shopping-table">
                    <tr>
                        <th>&nbsp;</th>
                        <th>Merchant Name</th>
                        <th>Quantity</th>
                        <th>Total Amount</th>
                        <th>&nbsp;</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>

任何试图显示信息的帮助和建议都将是非常好的。这个页面的目的是你可以有许多购物车取决于不同的商家,你在这里显示他们比有一个名为更多详细信息的链接,它会带你到一个特定的购物车。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-02 05:46:00

尝尝这个

代码语言:javascript
运行
复制
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();
    }
}

标记应该看起来像这样。

代码语言:javascript
运行
复制
<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>

这里的问题是你可以在后台的代码中控制你的布局。获取必要的控件和当前数据。然后像往常一样做你的绑定。

票数 2
EN

Stack Overflow用户

发布于 2012-02-02 05:27:55

而不是在字典上使用普通的Eval("ColumnName"),你可以简单地使用Eval("value")

你可以做这样的事情。

代码语言:javascript
运行
复制
<asp:Label ID="lblQuantity" runat="server" Text='<%#(Eval("key")=="Quantity" ? Eval("value") : "") %>' />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9103583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档