2015-11-25 3 views
-1

Я пытаюсь заполнить combobox, используя DataTable, возвращаемый с SQL через SQLDataAdapter.ComboBox.DisplayMember не имеет эффекта

Записи combobox должны отображаться как строки из столбца VendorName, но они отображаются как целые числа из столбца ID.

Может ли кто-нибудь определить, что я пропустил?

DataTable vendors = sql.GetData("SELECT id, VendorName FROM Vendors ORDER BY VendorName", "Q"); 

drpVendor.DataSource = vendors; 
drpVendor.DisplayMember = "VendorName"; 
drpVendor.ValueMember = "id"; 
drpVendor.SelectedIndex = 0; 

enter image description here

Я проверил содержимое DataTable поставщиков, назначая его как источник данных о в DataGridView, как показано ниже:

enter image description here

+0

Возможно, нам нужно будет увидеть, что вы делаете в функции GetData. – LarsTech

+0

Проблема не в коде, который вы нам показали. Если DisplayMember установлен неправильно, он будет показывать что-то вроде 'System.Data.DataRow' в вашей combobox. Вы должны делать что-то неправильно в 'sql.GetData()'. – Steve

ответ

0

Корень проблемы здесь был this проблема с Visual Studio 2010, не отображающая ошибки времени выполнения. Как только это было исправлено в Debug> Exceptions> CLR ... ошибки времени выполнения позволили мне определить следующую проблему.

drpVendor.DataSource = vendors; 

После этой линии называется событие drpVendor_SelectedIndexChanged было увольняет, который пытается изменить только для чтения столбца DataGridView.

Поскольку исключения CLR не были выброшены, код просто разбился после этой строки, оставляя поле со списком, отображающим столбец «id» по умолчанию.

Смежные вопросы