У меня есть DataTable (отображается через DataGridView), и я хочу использовать его повторно, чтобы вручную заполнить различные данные.Таким образом, рабочий процесс выглядит следующим образом:
Каждый раз, когда мне нужно пополнить DataTable, я делаю:
- Отсоединение DataTable от DataGridView.
- Очистка содержимого DataTable.
- Вручную добавить DataColumns и DataRows в DataTable.
- Снова подключить DataTable к DataGridView.
Чтобы выполнить шаг 0, я просто делаю: DataGridView.DataSource =null.
Чтобы выполнить шаг 1, я вызываю DataTable.Clear (), DataTable.Rows.Clear () и DataTable.Columns.Clear ().
Чтобы выполнить шаг 3, я вызываюDataGridView.DataSource = DataTable.
Шаг 2 выполняется обычным способом, и я пропускаю код.
Всякий раз, когда DataGridView обновляется новым содержимым, если я щелкаю столбец DataGridView для сортировки,в следующий раз, когда обновится DataTable, я получу исключение нулевой ссылки на шаге 2, когда попытаюсь добавить новые строки.Но если я никогда не щелкаю столбец DataGridView для сортировки, все работает нормально.
Я полагаю, это как-то связано с сортировкой.Но я понятия не имею, что вызывает исключение нулевой ссылки.Возможно ли, что DataTable пытается найти некоторые ключи в старом контенте, но не может его найти?Конечно, он не может найти старый контент из-за шага 1.Как правильно очистить старый контент DataTable, чтобы он никогда не ссылался на старый контент, когда я добавляю новый материал?
Спасибо.