Привязка списка массивов объектов к ListView в ASP.NET - PullRequest
2 голосов
/ 01 октября 2009

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

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

Ответы [ 2 ]

6 голосов
/ 01 октября 2009

Ваш источник данных не поддерживает стандартную привязку данных. Преобразуйте его в пару «имя-значение», которая будет иметь имя и значение для каждого элемента, который будет связан. Например, Dictionary collection подходит для этого. А затем просто включите свой ListView к этому:

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

<asp:Label runat="server" ID="lblName"
    Text='<%# Eval("Value") %>'></asp:Label>
5 голосов
/ 01 октября 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] %>' />
...