2009-10-01 3 views
2

Я ломаю голову, чтобы исправить проблему. У меня есть метод, который возвращает List<Object[]>.Bind Список массив объектов ListView в ASP.NET

Каждая 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> 

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

ответ

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> 
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] %>' /> 
Смежные вопросы