Как я могу получить идентификатор из выпадающего списка, заполненного данными SQL в C #? - PullRequest
0 голосов
/ 05 февраля 2019

Я сделал приложение, в котором вы можете вводить продукты в базу данных продуктов питания.Одно из полей ввода - types .Это отдельная таблица, и этот список заполнен списком, используемым для выбора типа пищи.Вот как выглядят таблицы:

типы

---------------------
| id (PK) | name    |
---------------------
| int     | varchar |
---------------------

продукты

-------------------------------------------------
| fid (PK) | fname   | typeid (FK:id) | price   |
-------------------------------------------------
| int      | varchar | int            | decimal |   
-------------------------------------------------

Это кодзаполнение поля со списком (TypeCB - это имя поля со списком):

TypeCB.ItemsSource = db.types.ToList();

Этот код не работает:

Food theFood = new Food();
Type theType = new Type();
theFood.name = NameText.Text;
theFood.typeid = Convert.ToInt32(TypeCB.SelectedValue);
theFood.price = Decimal.Parse(PriceText.Text);

db.Voers.InsertOnSubmit(hetVoer);
db.SubmitChanges();

Что я здесь не так делаю?Я получаю сообщение об ошибке:

theFood.typeid = Convert.ToInt32(TypeCB.SelectedValue);

Ошибка:

System.InvalidCastException: 'Не удается преобразовать объект WpfApp1.type в тип System.IConvertible.'

1 Ответ

0 голосов
/ 05 февраля 2019

Похоже, вы не указали свойства DisplayMember и ValueMember.Попробуйте указать их и посмотрите, поможет ли это, например:

TypeCB.ItemsSource = db.types.ToList();
TypeCB.ValueMember= "id";
TypeCB.DisplayMember = "name";

Я не уверен, не уточнив, какое значение будет иметь значение в свойстве SelectedValue, возможно, полный объект экземпляра type.

В противном случае используйте SelectedItem как обходной путь:

Type objType = TypeCB.SelectedItem;
theFood.typeid  = objtype.id;

, предполагая, что класс type имеет свойство fid, содержащее идентификатор.

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