powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при очистки поля dataGridView
12 сообщений из 12, страница 1 из 1
Ошибка при очистки поля dataGridView
    #38458727
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странная вещь происходит, может кто подскажет причину.
В таблице есть поле типа tinyint. Не обязательное для заполнение.
Если я ввожу туда значение - сохраняет.
А если стираю это значение (ячейка datagridview пустая) и нажимаю кнопку сохранить - выходит ошибка
"входная строка имела неверный формат".
Что не так?
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38458965
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306...
Что не так?А поле может принимать пустые (NULL) значения?
К тому-же tynyint - это число...
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38458980
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov,

Да. поле может принимать пустые значения.
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459316
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понятная штука происходит с числовыми полями.
Вот таблица
CREATE TABLE [dbo].[Waybills](
[id] [int] IDENTITY(1,1) NOT NULL,
[Gross] [numeric](16, 3) NULL,
[Tara] [numeric](16, 3) NULL,
[Warehouse] [varchar](25) NULL,
[Humidity] [numeric](5, 2) NULL,
[Impurity] [numeric](5, 2) NULL,
[Net] [numeric](16, 3) NULL,
[Lack] [numeric](16, 3) NULL,
CONSTRAINT [PK_Waybills_1] PRIMARY ( [id] ))

в datagridview ставлю числовым полям брутто тара нетто тип числовой в формате N3.

Когда заполняю поле - все нормально. А если стираю значение - то при сохранении ошибка "входная строка имела неверный формат".
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459378
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306,

Надо смотреть определение полей таблицы в объекте DataTable.
Также надо смотреть определение столбцов в GridView.
Нужно чтобы в GridView пустым значениям соответствующих столбцов присваивался Null.
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459555
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov
Нужно чтобы в GridView пустым значениям соответствующих столбцов присваивался Null.

Это значит в GridView прописать в свойстве столба NullValue значение Null ?
А вот источник датасет на картинки
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459592
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306...Это значит в GridView прописать в свойстве столба NullValue значение Null ?
Да, но не в GridView, а у источника данных.
Первое мое утверждение про GridView было ошибочным.
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459629
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая фигня со всеми числовыми полями ......
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459843
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306,
c'est la vie...
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459855
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov,

Я поняла в чем проблема. Если поле с числовым типом данных пустое надо записать NULL.
Как это сделать?
Пробовала прикрутить к CellValidating
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
      if (e.RowIndex > -1)
            {
                MessageBox.Show(this.GridView_Metrics["value", e.RowIndex].Value.ToString());
                string str= this.GridView_Metrics["value",e.RowIndex].Value.ToString();
                if (str.Length == 0)
                {
                    GridView_Metrics["value", e.RowIndex].Value = DBNull.Value;
                }
            }



Так смотрю какое значение в ячейки и получается при стирании в гриде как будто еще старое значение проверяется на CellValidating.
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459877
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась очень извращенным методом.
Ставлю DBNull в свойствах колонки.
Запускаю приложение.
Потом стираю значение DBNull (чтоб на экране грида не было написано DBNull).
И все работает! Ведать конструктор что-то прописал ... Интересно что ....
...
Рейтинг: 0 / 0
Ошибка при очистки поля dataGridView
    #38459905
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306...
Я поняла в чем проблема. Если поле с числовым типом данных пустое надо записать NULL.
Как это сделать?
Пробовала прикрутить к CellValidating
skiped...
Так смотрю какое значение в ячейки и получается при стирании в гриде как будто еще старое значение проверяется на CellValidating.Таня, в какой момент прописать?
В CellValidating по идее прописываться ничего не должно - т.к. это проверка ввода... Пользователь должен сам изменять значения.
Кроме того, правильным будет работать непосредственно с записью в наборе данных, а не со строкой в GridView...
Если нужно сделать проверку введённых значений перед сохранением в базу - ну так и делайте её именно в этом месте.

Тем не менее, при необходимости использования проверки на уровне GridView, воспользуйтесь приведённым примером , а также прочтите про обработку ошибок .
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка при очистки поля dataGridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]