Repeater绑定dictionary数据源


.aspx页面代码


 

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <%#  ((KeyValuePair<int, List<User>>)Container.DataItem).Key %> <br />
            <asp:Repeater ID="Repeater2" runat="server" DataSource='<%#  ((KeyValuePair<int, List<User>>)Container.DataItem).Value %>'>
                <ItemTemplate>
                    <%# (Container.DataItem as User).Id %>
                    <%# (Container.DataItem as User).Name %>
                </ItemTemplate>
            </asp:Repeater>
            <hr />
        </ItemTemplate>
    </asp:Repeater>


 

 

.aspx.cs后置代码

public partial class Temp : System.Web.UI.Page
{
    Dictionary<int, List<User>> dict = new Dictionary<int, List<User>>();

    protected void Page_Load(object sender, EventArgs e)
    {
        dict.Add(1, new List<User>
        {
            new User{Id = 1, Name = "aa"}
            ,new User{Id = 2, Name = "bb"}
        });

        dict.Add(2, new List<User>
        {
            new User{Id = 3, Name = "cc"}
            ,new User{Id = 4, Name = "dd"}
        });

        Repeater1.DataSource = dict;
        Repeater1.DataBind();
    } 
}

public class User
{
    public int Id{get;set;}
    public string Name{get;set;}
}


 

 

 

如果报以下错误:


repeater 使用的是无效数据源。有效数据源必须实现 IListSource 或 IEnumerable?

是因为数据源类型问题,比如 DataTable DataSet Xml Arrry  集合
像 String   int   对象 这样的类型是不能直接作为它的数据源的,尤其要注意对象引起的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值