Ошибка при просмотре DataGrid
Моим пользователям нужен способ массовой загрузки / редактирования в нашу базу данных продуктов, почти как если бы они использовали Excel, где они могли бы копировать и вставлять в электронную таблицу. Хотя это заставляет меня задуматься, я не начальник, так что это то, что есть. Я просто собираюсь сбросить все в представление таблицы данных и позволить им там редактировать (тьфу). Хотя есть много вещей, которые требуют определенных значений (например, Размер), и я не хочу, чтобы они вводились в XL, XLarge, X-Large, xlarge, когда все они должны быть, например, XLarge. Поэтому мне нужны комбо-боксы. Это достаточно просто, но они также хотят иметь возможность выбирать, какие столбцы будут отображаться, так что это не статическая таблица, в которой я могу просто указать типы столбцов. Мне удалось динамически сделать соответствующие столбцы комбинированного списка и заполнить их данными. Я заполняю их так:
for (int y = 0; y < table.Rows.Count; y++)
{
viewMassEdit.Rows.Add();
for (int x = 0; x < table.Columns.Count; x++)
viewMassEdit.Rows[y].Cells[x].Value = table.Rows[y][x].ToString();
}
Все данные заполняются правильно. Без исключений. Вот где возникает проблема. Это создает большую таблицу, и когда я начинаю прокручивать, вертикально или горизонтально, периодически появляются эти необработанные сообщения об ошибках:
О чём это дерьмо? Он принял значение отлично, когда я положил его туда, как это проблема сейчас, когда я перемещаюсь по таблице? Кроме того, куда бы я пошел, чтобы обработать эту ошибку?
2 ответа
Хорошо, чтобы "обработать" ошибку - добавьте обработчик к событию DataGridView.DataError:
void InitializeComponent() {
// ... //
this.DataGridView.DataError += this.DataGridView_DataError;
}
void DataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e) {
e.ThrowException = false;
}
Возможно, вы захотите отладить этот DataGridViewDataErrorEventArgs и посмотреть, что такое исключение и т. Д., Чтобы вы могли предотвратить его запуск в первую очередь.
Чтобы узнать, где обрабатывать ошибку, выполните отладку с параметром Разорвать на обработанные исключения (Отладка-> Исключения). это должно помочь вам точно определить источник.