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

use*_*410 3 asp.net listview bind eval

我正在解决问题.我有一个方法返回一个List<Object[]>.

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

object[0]=Id;
object[1]=Name;
Run Code Online (Sandbox Code Playgroud)

现在,我正在寻找一种方法将此List绑定到自定义中的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>
Run Code Online (Sandbox Code Playgroud)

任何建议都将深表感谢.

Can*_*var 6

您的数据源无法进行标准数据绑定.将其转换为名称值对,该名称对将具有绑定的每个项目的名称和值.例如,Dictionary <string,string> collection与此兼容.然后只需将ListView转为:

<asp:Label runat="server" ID="lblId"
    Text='<%# Eval("Key") %>'></asp:Label>

<asp:Label runat="server" ID="lblName"
    Text='<%# Eval("Value") %>'></asp:Label>
Run Code Online (Sandbox Code Playgroud)


Ahm*_*eed 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] %>' />
Run Code Online (Sandbox Code Playgroud)