C # привязывает DataGridView к Hashtable - PullRequest
2 голосов
/ 07 июня 2011

Я хочу сделать C # DataGridView DataSource как HashTable, где есть два столбца:

  • Первый будет ключом;
  • Второе значение.

Возможно ли это?

РЕДАКТИРОВАТЬ: Пожалуйста, смотрите мой комментарий о настройке / получении значения из / в хеш-таблицу. Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Проблема здесь в том, что вы не можете привязать напрямую к HashTable. Вам нужно что-то, что реализует: IList, IListSource, IBindingList, IBindingListView. HashTable не реализует ни один из этих интерфейсов.

Попробуйте использовать LINQ, чтобы получить HashTable в List:

Hashtable ht = new Hashtable();    
ht.Add(1,"foo");
ht.Add(2,"bar");    
dataGridView1.DataSource = ht.Cast<DictionaryEntry>()
                             .Select(x => new { Col1 = x.Key.ToString(), 
                                                Col2 = x.Value.ToString() })
                             .ToList();

Обратите внимание, что у анонимного класса есть 2 именованных свойства (для краткости я использовал Col1 и Col2. Ваша сетка должна точно знать о них:

enter image description here

1 голос
/ 07 июня 2011

Краткий ответ: НЕТ.DataGridView поддерживает IList, поэтому вы можете попробовать использовать List вместо Hashtable.

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/d4745e6e-fcb1-4083-8d4a-e654b5afa75a/

...