Repeater绑定dictionary数据源代码及报错解决

时间:2022-09-17 21:21:24

.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 对象 这样的类型是不能直接作为它的数据源的,尤其要注意对象引起的问题