Привязка к списку <string>с использованием DataBinder.Eval - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть следующий объект:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents = new List <string>();
   //Constructor..... etc.

}

Я строю динамическую сетку кросс-таблицы, используя GridView в asp.net 3.5

Я хочу привязать к CellContents [0] для динамическогостолбец 1, CellContents [1] для динамического столбца 2 (динамический столбец 0 - это поле RowName из CrossTabDataObject) и т. д. Я использую:

object boundValueObj = null;
Control ctrl = (Control)sender;
IDataItemContainer dataItemContainer = (IDataItemContainer)ctrl.NamingContainer;
boundValueObj = DataBinder.Eval(dataItemContainer.DataItem, strSelectedID);

Этот код находится в функции InstantiateIn вида сетки какСоздаю шаблоны выпадающего списка в каждой ячейке кросс-таблицы.

У меня есть код (не показан), который устанавливает strSelectedID в зависимости от создаваемого столбца.

Когда strSelectedID равен «RowName» для динамического столбца [0], функция DataBinder.Eval работает нормально и устанавливает boundValueObj, как и ожидалось.Проблема возникает, когда для strSelectedID задано значение «CellContents [n]», где n - индекс столбца.

DataBinder.Eval работает только со свойствами и полями объектов.Как мне обойти это?

Спасибо,

Рич.

1 Ответ

0 голосов
/ 05 сентября 2010

ОК - глупая ошибка мной!

Изменение:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents = new List <string>();
   //Constructor..... etc.

}

на:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents{get;set;}
   //Constructor
   public CrossTabDataObject()
   {
     CellContents = new List<string>();
   }

}

сделало все различияДругими словами, я сделал CellContents свойством класса.

Rich.

...