Мне показалось, что я умный, чтобы переключиться с интенсивного DataView на SortedDictionary в качестве эффективной сортируемой структуры данных в памяти. Теперь я понятия не имею, как получить ключ и значение из источника данных в выражениях <% # или Eval().
SortedDictionary<int, string> data = RetrieveNames();
rCurrentTeam.DataSource = data;
rCurrentTeam.DataBind();
<asp:Repeater ID="rNames" runat="server">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("what?") %>' />
</ItemTemplate>
</asp:Repeater>
Любые предложения?
Используйте любой из этих двух параметров:
<%# Eval("Key") %>
<!-- or -->
<%# Eval("Value") %>
в зависимости от того, нужен ли вам ключ или значение из словаря.
Это имеет смысл, если вы думаете о том, как работает привязка данных. Связывание данных - это процесс, посредством которого элемент управления принимает перечислимую последовательность, выполняет итерацию этой последовательности и использует отражение для извлечения значений из каждого элемента в последовательности на основе свойств, которые предоставляет объект.
Так как SortedDictionary<TKey,TValue>
реализует интерфейс IEnumerable<KeyValuePair<TKey, TValue>>
, вы знаете, что ретранслятор будет перечислять последовательность объектов KeyValuePair<TKey, TValue>
, привязывая их по очереди.
Если вы посмотрите на свойства, которые подвергаются классу KeyValuePair<TKey,TValue>
, вы увидите только два: Key
и Value
, Поскольку они являются общедоступными, вы можете Eval
их, и элемент управления сможет извлекать значения, которые они инкапсулируют.