Свяжите словарь с повторителем

У меня есть объект словаря <string, string> и хотел бы связать его с повторителем. Однако я не уверен, что вставить aspx разметка для фактического отображения пары "ключ-значение". Нет никаких брошенных ошибок, и я могу заставить это работать с a List. Как я заставляю словарь отображаться в повторителе?

40
задан George Stocker 9 July 2014 в 18:40
поделиться

3 ответа

IDictionary также является ICollection > .

Вам необходимо выполнить привязку к чему-то вроде (непроверено):

((KeyValuePair<string,string>)Container.DataItem).Key
((KeyValuePair<string,string>)Container.DataItem).Value

Обратите внимание, что порядок, в котором возвращаются элементы, не определен. Они могут быть возвращены в порядке вставки для небольших словарей, но это не гарантируется. Если вам нужен гарантированный порядок, SortedDictionary сортирует по ключу.

Или, если вам нужен другой порядок сортировки (например, по значению), вы можете создать List > ваших пар ключ-значение, затем отсортировать его и привязать к отсортированный список.

Ответ : Я использовал этот код в разметке для отображения ключа и значения по отдельности:

<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Key") %>
<%# DataBinder.Eval((System.Collections.Generic.KeyValuePair<string, string>)Container.DataItem,"Value") %>
46
ответ дан 27 November 2019 в 01:24
поделиться

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

GWT уже удаляет дополнительный код за пределами интерфейсов RPC - например, если вы берете приложение без RPC, вы можете использовать такие интерфейсы, как List и Map и Set to your hearts content - GWT автоматически будет включать только те реализации, которые вы действительно используете. Почему? Потому что он имеет доступ к вашему коду и способен на самом деле проходить все видимые перестановки кода и обрезать неиспользуемые классы. Таким образом, GWT фактически не создает взрывов классов при использовании интерфейсов.

Проблема заключается исключительно в RPC. Точка службы RPC заключается в том, что сервер должен реализовать интерфейс RPC - это означает, что если интерфейс диктует, что метод должен возвращать список, сервер может возвращать любую реализацию списка, которую он хочет, пока он может быть сериализован.

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

-121--4667739-

Можно создать новый фиктивный элемент над реальным, с тем же количеством ширины содержимого, чтобы получить дополнительную полосу прокрутки, а затем связать полосы прокрутки вместе с событиями onscroll .

 функция DouureScroll (элемент) {var scrollbar = document.createElement («div»); scrollbar.appendChild (document.createElement («div»)); scrollbar.style.overflow = 'auto'; scrollbar.style.overflowY = 'скрытый'; scrollbar.firstChild.style.width = element.scrollWidth + 'px'; scrollbar.firstChild.style.paddingTop = '1 пкс'; scrollbar.firstChild.appendChild (document.createTextNode ('\xA0')); scrollbar.onscroll = функция () {element.scrollLeft = scrollbar.scrollLeft;}; element.onscroll = функция () {scrollbar.scrollLeft = element.scrollLeft;}; element.parentNode.insertBefore (полоса прокрутки, элемент);} DouureScroll (document.getElityStartId («doublescroll»)); 
 # doublescroll {overflow: auto; overflow-y: hidden;} # doublescroll p {margin: 0; набивка: 1em; white-space: nowrap;} 
 < div id = «doublescroll» > < p > Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud executation ullamco laboris nisi ut aliquip ex ea commodo consepcat. 

Это доказательство концепции, которую можно улучшить, например. опрашивая или прослушивая события, которые могут изменить scrollWidth элемента , например, изменение размеров окна при использовании длины % ,изменения размера шрифта или изменения содержимого, вызванные другими сценариями. Также (как обычно) возникают проблемы с IE, выбирающим рендеринг горизонтальных полос прокрутки внутри элемента, и масштабированием страницы IE7. Но это начало.

-121--1390568-

Привязка к коллекции значений словаря.

myRepeater.DataSource = myDictionary.Values
myRepeater.DataBind()
11
ответ дан 27 November 2019 в 01:24
поделиться

<%# Eval("key")%> сработало для меня.

32
ответ дан 27 November 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: