我正在解决问题。我有一个方法返回List<Object[]>
。
列表中的每个object[]
都包含以下内容:
object[0]=Id;
object[1]=Name;
现在,我正在寻找一种方法将此List绑定到自定义ItemTemplate
中的ListView,如下所示:
<asp:Label runat="server" ID="lblId"
Text="Here want to do an Eval/Bind for object[0]"></asp:Label>
<asp:Label runat="server" ID="lblName"
Text="Here want to do an Eval/Bind for object[1]"></asp:Label>
任何建议都将深受赞赏。
答案 0 :(得分:6)
您的数据源无法进行标准数据绑定。将其转换为名称值对,该名称对将具有绑定的每个项目的名称和值。例如,Dictionary<string, string>集合与此兼容。然后将ListView转为:
<asp:Label runat="server" ID="lblId"
Text='<%# Eval("Key") %>'></asp:Label>
<asp:Label runat="server" ID="lblName"
Text='<%# Eval("Value") %>'></asp:Label>
答案 1 :(得分:5)
对象数组列表是存储项目的不良选择。您应该考虑使用表示项目的类,或者使用@Canavar建议的字典。然后你就能以更清洁的方式使用Eval方法。
也就是说,虽然语法让我的眼睛流血,但是可以用你当前的设置进行绑定。
<asp:Label runat="server" ID="lblId"
Text='<%# ((Object[])Container.DataItem)[0] %>' />
<asp:Label runat="server" ID="lblName"
Text='<%# ((Object[])Container.DataItem)[1] %>' />