Как привязать словарь к gridview? - PullRequest
2 голосов
/ 07 января 2011

Можно ли автоматически привязать словарь к Gridview?Самое близкое, что у меня есть:

Dictionary<string, myObject> MyDictionary = new Dictionary<string, myObject>();
// Populate MyDictionary here.
Grid1.DataSource = MyDictionary.Values;
Grid1.DataBind();

Это связывает свойства в myObject с сеткой, но я бы тоже хотел получить ключ.Если это невозможно, есть ли альтернатива, например, использовать ретранслятор?Спасибо.

Ответы [ 5 ]

3 голосов
/ 07 января 2011

Вы можете использовать:

var data = MyDictionary.Select(x => new List<object>{x.Key, x.Value});

Это даст вам IEnumerable<List<object>>, где IEnumerable представляет «строки», а внутри каждой строки List<object> представляет «столбцы».

Это немного отличалось бы, если myObject - это тип коллекции. Я не могу быть уверен в вашем коде, но похоже, что это не так.

2 голосов
/ 13 июля 2011

Я думаю, что лучший способ - это преобразовать в List>

List<KeyValuePair<string, object>> list = new List<KeyValuePair<string, object>>();
list.AddRange(dictionary);
Grid1.DataSource = list;

, это также позволяет легко сортировать:

list.Sort(delegate...);

, а затем передать его как источник данных.

2 голосов
/ 07 января 2011

Вам нужно связать столбцы с «Ключом» и «Значением», я считаю.

1 голос
/ 07 января 2011

Согласно MSDN , источник данных должен быть объектом, реализующим один из следующих интерфейсов:

  • Интерфейс IList, включая одномерные массивы.
  • Интерфейс IListSource, например классы DataTable и DataSet.
  • Интерфейс IBindingList, например класс BindingList.
  • Интерфейс IBindingListView, например класс BindingSource.

Словарь не реализует ни один из этих интерфейсов.Самое близкое, что вы можете получить, это использовать List<KeyValuePair<string, myObject>>.

1 голос
/ 07 января 2011

Понятия не имею, насколько хорошо работает словарь как itemsSource. Я думаю, что нет, если только Словарь не реализует IEnumerable или ICollection.

Однако вы можете создать свой собственный объект, который содержит свойство Key string и ваш Object, и иметь коллекцию таких элементов. Однако, этого не хватит многим вещам, которые есть в Словаре (например, уникальные ключи и тому подобное).

Возможно, в словаре есть метод ToList ()

Дает ли вы ошибку при вводе словаря в качестве источника. Если нет, возможно, вам нужно установить DisplayMemberPath для столбцов как Значение и Ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...