2014-12-19 2 views
0

У меня был List(Of MyClass) в качестве источника данных для элемента управления DataGridView, и это сработало хорошо. Колонка автоматически создавалась для каждого публичного объекта в MyClass.Значения привязки словаря к DataGridView

Я решил, хотя я хотел, чтобы список был проиндексирован строкой, поэтому я изменил ее на Dictionary(Of String, MyClass), и, конечно, привязка данных больше не работает.

Я попытался использовать ToArray(), ToList(), значения() и т. Д., Но ни один из них не возвращает данные в подходящей структуре, которые будут правильно отображаться в DataGridView.

Есть ли простой способ преобразования ValueCollection из словаря в какой-то перечислимый список MyClass? Или может кто-нибудь предложить лучшую структуру данных, чем Словарь для этой цели?

Спасибо.

+0

Возможный дубликат [DataGridView привязан к словарю] (http://stackoverflow.com/questions/854953/datagridview-bound-to-a-dictionary) – Junaith

+0

@Junaith Спасибо за ссылку. Я видел этот вопрос. Однако он не полностью отвечает на мою проблему. В этом случае они использовали только одно свойство. Основной ответ довольно сложный, и пример кода плохо объяснен. Я пробовал некоторые другие предложения, но не смог расширить их для работы с несколькими свойствами. (Не помогает, что это C#, а не VB, и мой опыт Linq ограничен). Кроме того, это не касается второй части моего вопроса, то есть есть ли более подходящая структура данных, которую я мог бы использовать вместо словаря? –

ответ

0

В настоящее время я реализовал это, заполнив новый список из словаря для целей привязки данных. Этого достаточно для моих непосредственных потребностей, но явно неэффективно.

 Dim ds As New List(Of MyClass) 
     For Each v As Object In MyDictionary 
      ds.Add(v.value) 
     Next 
     DataGridView1.DataSource = ds 

Я уверен, что есть лучшие решения, поэтому по-прежнему приветствуем другие ответы.