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

Да. поле может принимать пустые значения.
...
Рейтинг: 0 / 0
10.11.2013, 15:19
    #38459316
Tanya_0306
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
Не понятная штука происходит с числовыми полями.
Вот таблица
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
10.11.2013, 16:30
    #38459378
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
Tanya_0306,

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

Это значит в GridView прописать в свойстве столба NullValue значение Null ?
А вот источник датасет на картинки
...
Рейтинг: 0 / 0
10.11.2013, 21:23
    #38459592
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
Tanya_0306...Это значит в GridView прописать в свойстве столба NullValue значение Null ?
Да, но не в GridView, а у источника данных.
Первое мое утверждение про GridView было ошибочным.
...
Рейтинг: 0 / 0
10.11.2013, 22:24
    #38459629
Tanya_0306
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
такая фигня со всеми числовыми полями ......
...
Рейтинг: 0 / 0
11.11.2013, 09:00
    #38459843
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
Tanya_0306,
c'est la vie...
...
Рейтинг: 0 / 0
11.11.2013, 09:13
    #38459855
Tanya_0306
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
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
11.11.2013, 09:37
    #38459877
Tanya_0306
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
Проблема решилась очень извращенным методом.
Ставлю DBNull в свойствах колонки.
Запускаю приложение.
Потом стираю значение DBNull (чтоб на экране грида не было написано DBNull).
И все работает! Ведать конструктор что-то прописал ... Интересно что ....
...
Рейтинг: 0 / 0
11.11.2013, 10:11
    #38459905
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при очистки поля dataGridView
Tanya_0306...
Я поняла в чем проблема. Если поле с числовым типом данных пустое надо записать NULL.
Как это сделать?
Пробовала прикрутить к CellValidating
skiped...
Так смотрю какое значение в ячейки и получается при стирании в гриде как будто еще старое значение проверяется на CellValidating.Таня, в какой момент прописать?
В CellValidating по идее прописываться ничего не должно - т.к. это проверка ввода... Пользователь должен сам изменять значения.
Кроме того, правильным будет работать непосредственно с записью в наборе данных, а не со строкой в GridView...
Если нужно сделать проверку введённых значений перед сохранением в базу - ну так и делайте её именно в этом месте.

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


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