Mphirana Ответов: 2

Вставьте выбранное значение из поля со списком (tinyint value) C#


Я пытаюсь вставить выбранное значение из поля со списком (Win forms)

У меня есть два поля со списком, которые используют разные типы данных (Int и tinyint)

Тип данных int работает

Что я уже пробовал:

For INT code is working
<pre>eventInfo.PersonDetailModuleID = Convert.ToInt32(cboPersonDetailModule.SelectedValue.ToString())


Для TinyInt код не работает
eventInfo.ChildPersonDetailModuleID = Convert.ToByte(cboPersonDetailModuleChild.SelectedValue.ToString())


ДАЛМАТИНЕЦ

parms[2] = new SqlParameter("@PersonDetailModuleID", SqlDbType.Int, 4,ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.PersonDetailModuleID);
parms[3] = new SqlParameter("@ChildPersonDetailModuleID", SqlDbType.TinyInt,1, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.ChildPersonDetailModuleID);


Ошибка или предупреждение:
FormatException was unhandled

Необработанное исключение типа 'System.FormatException' произошло в mscorlib.dll
Input string was not in a correct format

2 Ответов

Рейтинг:
19

OriginalGriff

Начните с отладчика и посмотрите, что находится в вашем SelectedValue.

Документация - Преобразовать.Метод ToByte (Система) | Microsoft Docs[^] - говорит, что FormatException возникает, когда он содержит нечисловое значение otehr, чем' -', или когда строка пуста. Поэтому начните с отладчика и проверьте, что именно вы передаете для преобразования.Тобайт.


Рейтинг:
1

Mphirana

Спасибо OriginalGriff когда я заполнить мое поле со списком я использовал неправильную primaryID ValueMember в выпадающем списке, что использовать int

Я использовал

cboPersonDetailModuleChild.ValueMember = "PersonDetailModuleID";<pre>
вместо
cboPersonDetailModuleChild.ValueMember = "ChildPersonDetailModuleID";