Я работаю над проектом Web Forms, который загружает результаты запросов Sql в DataTable.Динамическое привязку к пользовательскому бизнес-объекту в Runtime
Эти DataTable s передаются до интерфейса, где мы связываем их с веб-контролем Repeater.
Это прекрасно работает. Однако теперь мы хотим привязать к нашим собственным пользовательским классам вместо DataTable
. К сожалению, я думал, что явный ответ не сработал (внедряя IDictionary<string, object>
в наш класс).
Что нам нужно для привязки Eval к Datum без создания конкретного свойства для каждого привязки? Очевидно, DataRow не должен конкретно реализовывать каждое свойство, которое мы связываем. Итак, как-то кажется, что Eval может искать значения свойств по имени в DataRow.
Вот пользовательский класс
public class Datum: IDictionary<string, object>
{
private Dictionary<string, object> _entries;
public Datum()
{
_entries = new Dictionary<string, object>();
}
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
<asp:Repeater ID="rptTags" runat="server">
<ItemTemplate>
<%# (int)Eval("Count") >
</ItemTemplate>
</asp:Repeater>
Используя приведенный выше пример, мы получаем сообщение об ошибке, говорящее, что данное свойство не существует, что верно, но оно d на DataRow тоже не существует. Как это сделать, как System.Data.DataRow?
Вы можете поделиться вам класс модели данных и Eval выражение, что бы облегчить помощь. –
«Это делает кошмар, чтобы испытать что-нибудь». Например? –
@mark Хорошо, я думаю, что получаю это ... – Aristos