将对象数组的列表绑定到ASP.NET中的ListView

时间:2009-10-01 04:42:31

标签: asp.net listview eval bind

我正在解决问题。我有一个方法返回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>

任何建议都将深受赞赏。

2 个答案:

答案 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] %>' />