У меня есть DataTable (отображается через DataGridView) и вы хотите повторно использовать его для ручного заполнения разных данных. Таким образом, рабочий процесс:Как повторно использовать DataTable для разных источников данных в C#?
Каждый раз, когда мне нужно пополнить 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, чтобы он никогда не ссылался на старый контент, когда я заполняю новые материалы?
Спасибо.
Почему бы просто не создать новый DataTable? Что вы получаете, добавляя эту сложность? –