Я работаю над проектом Web Forms , который загружает результаты Sql-запроса s в DataTable s.
Эти DataTable передаются во внешний интерфейс, где мы привязываем их к веб-элементу управления Repeater .
Это прекрасно работает. Однако теперь мы хотели бы выполнить привязку к нашим собственным пользовательским классам вместо DataTable
.К сожалению, то, что я считал очевидным, не сработало (реализация IDictionary
в нашем классе).
Что нам нужно для привязки Eval к Datum без создания конкретного свойства для каждой привязки? Очевидно, что DataRow не обязательно конкретно реализовывать каждое свойство, которое мы привязываем. Итак, почему-то кажется, что Eval может искать значения свойств по имени в DataRow.
Вот настраиваемый класс
public class Datum: IDictionary
{
private Dictionary _entries;
public Datum()
{
_entries = new Dictionary();
}
public object this[string s]
{
get
{
return this._entries[s];
}
}
...
}
Вот где DataSource установлен в файле aspx.cs
rptTags.DataSource = new[] { new Datum { {"Count", 1} }, new Datum { {"Count", 2 } };
А вот и привязка в aspx файле
<%# (int)Eval("Count") >
Используя приведенный выше пример, мы получаем сообщение об ошибке, говорящее, что рассматриваемого свойства не существует, что верно, но оно также не существует в DataRow. Как я могу привязать его как System.Data.DataRow?