Динамическая привязка к настраиваемому бизнес-объекту во время выполнения

Я работаю над проектом 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?

6
задан Mark Rucker 15 April 2015 в 22:24
поделиться