Можете ли вы привязать представление сетки asp.net к полю в базовом классе? - PullRequest
5 голосов
/ 16 ноября 2010

У меня есть следующие классы (псевдокод):

  • Item (int Field1)
  • ItemDetail: Item (int Field2, string field3)

Если я установлю ItemDetail в качестве источника данных для вида сетки asp.net:

grid.DataSource = new List<ItemDetail>();
grid.DataBind();

Могу ли я использовать Field1 в GridView? Если да, то каков правильный синтаксис DataBinder? Следующий код взрывается, пытаясь разыграть предмет:

<%# DataBinder.Eval(Container.DataItem, "Field1") %>

Заранее спасибо за любую помощь.

РЕДАКТИРОВАТЬ: И я идиот. Я скопировал gridview и вызывал обработчик событий RowDataBound для другой сетки ... Извините, что потратил впустую все время, но здесь есть некоторая полезная информация независимо от того, есть ли у кого-то один и тот же вопрос. В конце публичные свойства базового класса связываются правильно. Спасибо!

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Если свойство базового класса является общедоступным, у вас не должно быть проблем, если вы также инициализируете его в своих дочерних конструкторах.

Кроме того, я не уверен, является ли ваш пример привязки псевдокодом или нет, но вы должны привязать сетку к IListSource, IEnumerable или IDataSource, поэтому вам нужны Collection, List, IQueryable и т. Д. ItemDetails.

0 голосов
/ 16 ноября 2010

Для этого у вашего класса ItemDetail должно быть свойство с именем Field1.Хотя остальная часть синтаксиса хороша.

<%# DataBinder.Eval(Container.DataItem, "Field1") %>

ItemDetal itemDetail = new ItemDetail();
itemDetail.Field1 = 100;
  • , где Field1 - доступное свойство, а не только личное поле в вашем классе.Это должно выписать 100 в вашей сетке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...