Как использовать Eval () для ссылки на значения в SortedDictionary в Repeater asp?

2

Мне показалось, что я умный, чтобы переключиться с интенсивного 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>

Любые предложения?

Теги:
repeater
sorteddictionary

1 ответ

7
Лучший ответ

Используйте любой из этих двух параметров:

<%# Eval("Key") %>
<!-- or -->
<%# Eval("Value") %>

в зависимости от того, нужен ли вам ключ или значение из словаря.

Это имеет смысл, если вы думаете о том, как работает привязка данных. Связывание данных - это процесс, посредством которого элемент управления принимает перечислимую последовательность, выполняет итерацию этой последовательности и использует отражение для извлечения значений из каждого элемента в последовательности на основе свойств, которые предоставляет объект.

Так как SortedDictionary<TKey,TValue> реализует интерфейс IEnumerable<KeyValuePair<TKey, TValue>>, вы знаете, что ретранслятор будет перечислять последовательность объектов KeyValuePair<TKey, TValue>, привязывая их по очереди.

Если вы посмотрите на свойства, которые подвергаются классу KeyValuePair<TKey,TValue>, вы увидите только два: Key и Value, Поскольку они являются общедоступными, вы можете Eval их, и элемент управления сможет извлекать значения, которые они инкапсулируют.

  • 0
    Отличный ответ, мне интересно, как элементы управления этой базы данных узнают, какой список IEnumerable использовать, когда к нему привязаны объекты? Это значит, что если бы я хотел сделать свои собственные элементы управления связанными с данными. Существует ли какое-либо свойство сборки, которое делает определенный элемент IEnumable «по умолчанию» для привязки данных?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню