Чтобы сделать стиль ComboBox для базы данных вручную, пытаясь установить связь между числом (внутренним) и некоторым текстом (видимым), я обнаружил, что вам необходимо:
- Храните ваши элементы в списке (вы близки - кроме строки, строки - нужно int, строка)
- Свойство DataSource к списку (Вы хороши)
- DataMember, DataValue (Вы хороши)
- Загрузить значение по умолчанию (Вы в порядке)
- Приведите ценность из базы данных (Ваш вопрос)
- Получить значение для возврата в базу данных (Ваш следующий вопрос)
Перво-наперво. Измените значение KeyValuePair на следующее:
(0, "Выбор")
(1, «Вариант 1»)
Теперь, когда вы запускаете свой sql «Выбор empstatus среди сотрудников, где бла» и возвращаете целое число, вам нужно установить комбинированный список, не тратя много времени.
Просто: *** Выбрано ЗНАЧЕНИЕ - не элемент ****
cmbEmployeeStatus.SelectedValue = 3; //or
cmbEmployeeStatus.SelectedValue = intResultFromQuery;
Это будет работать независимо от того, загружали ли вы комбинированный список вручную со значениями кода, как вы это сделали, или если вы загружаете comboBox из запроса.
Если ваши внешние ключи являются целыми числами (что для того, что я делаю, они все), жизнь легка. После того, как пользователь внесет изменение в comboBox, значение, которое вы сохраните в базе данных, будет SelectedValue. (Примените к int при необходимости.)
Вот мой код для установки ComboBox на значение из базы данных:
if (t is DBInt) //Typical for ComboBox stuff
{
cb.SelectedValue = ((DBInt)t).value;
}
И для извлечения:
((DBInt)t).value = (int) cb.SelectedValue;
DBInt - это оболочка для Integer, но это часть моего ORM, которая дает мне ручное управление привязкой данных и уменьшает количество ошибок кода.
Почему я ответил на это так поздно? Я тоже боролся с этим, так как в Интернете нет хорошей информации о том, как это сделать. Я понял это, и подумал, что я был бы хорошим и опубликовать это для кого-то еще, чтобы видеть.