3

我正在努力解决一个问题。我有一个返回List<Object[]>.

列表中的每个都object[]包含以下内容:

object[0]=Id;
object[1]=Name;

现在,我正在寻找一种方法将此列表绑定到自定义的 ListView,ItemTemplate如下所示:

<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>

任何建议将不胜感激。

4

2 回答 2

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>
于 2009-10-01T05:14:30.783 回答
6

对象数组列表是存储项目的糟糕选择。您应该考虑使用代表项目的类,或@Canavar 建议的字典。然后,您将能够以更简洁的方式使用 Eval 方法。

也就是说,可以与您当前的设置绑定,尽管语法让我眼花缭乱。

<asp:Label runat="server" ID="lblId"
    Text='<%# ((Object[])Container.DataItem)[0] %>' />
<asp:Label runat="server" ID="lblName"
    Text='<%# ((Object[])Container.DataItem)[1] %>' />
于 2009-10-01T05:37:55.013 回答