Привязать список массива объектов к ListView в ASP.NET

Я ломаю голову, чтобы решить проблему. У меня есть метод, который возвращает 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>

Любые предложения будут глубоко оценены.


person user153410    schedule 01.10.2009    source источник


Ответы (2)


Ваш источник данных не поддерживает стандартную привязку данных. Преобразуйте его в пару "имя-значение", которая будет иметь имя и значение для каждого элемента, который будет привязан. Например, для этого подходит коллекция 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>
person Canavar    schedule 01.10.2009

Список массивов объектов - плохой выбор для хранения элементов. Вам следует рассмотреть возможность использования класса, представляющего элемент, или словаря, как предложил @Canavar. Тогда вы сможете использовать метод Eval более чистым способом.

Тем не менее, можно выполнить привязку к вашей текущей настройке, хотя синтаксис заставляет меня кровоточить.

<asp:Label runat="server" ID="lblId"
    Text='<%# ((Object[])Container.DataItem)[0] %>' />
<asp:Label runat="server" ID="lblName"
    Text='<%# ((Object[])Container.DataItem)[1] %>' />
person Ahmad Mageed    schedule 01.10.2009