2013-07-12 5 views
0

Хорошо, поэтому я пытаюсь сделать простое приложение SQL CE Viewer для просмотра моих локальных баз данных для другого приложения, у меня есть настройка, чтобы я мог выбрать, какую базу данных я хочу открыть и то он автоматически заполняет комбинированное поле со всеми таблицами в базе данных. Когда я выбираю таблицу, он заполняет DataGridView с записями в таблице.C#: Сброс DataGridView для нового DataTable

Моя проблема заключается в переключении между таблицами. Я не могу заставить DataGridView удалить все из предыдущей таблицы и повторно заполнить DataGridView новой информацией о таблице. Конечно, каждая таблица имеет разные столбцы и строки и т. Д.

Я искал в Интернете и искал здесь, и каждое предложение, которое я нахожу, похоже, не работает. Он заполняет DataGridView с первой таблицей только штрафом, но когда я выбираю другой, он в основном добавляет столбцы и строки во все, что там было.

Как я могу получить DataGridView для полной очистки для новых данных?

И, пожалуйста, не говорите мне использовать dataGridView1.DataSource = null; Пробовал это, не работает.

ответ

1

Ну, я проверил его в одной из моих программ, и просто изменение свойства DataSource работает нормально. Мне не нужно было использовать datagridview.Refresh(). Может быть, это зависит от типа DataSource, который вы используете для установки данных datagridview?

+0

'conn = new SqlCeConnection (@" Источник данных = "+ fixFilePath); используя (conn) { conn.Open(); command = new SqlCeCommand ("SELECT * FROM" + tableName, conn); daDataGridView = новый SqlCeDataAdapter (команда); daDataGridView.Fill (dtDataGridView); bsDataGridView.DataSource = dtDataGridView; dataGridView1.DataSource = bsDataGridView; } ' –

+0

Вот исходный код: http://www.filedropper.com/sqlcedatabaseviewer –

+0

Я не уверен, но ваша проблема может возникнуть из-за того, что вы не очищаете данные, прежде чем устанавливать для нее новую таблицу. Метод Multiple Fill для единственного DataTable, скорее всего, добавляет новые строки в существующие. Если вы еще не пробовали, вы можете это проверить. Как я уже сказал, я не уверен на 100% и не могу проверить это сейчас. Вы также можете попробовать использовать DataSet, а затем добавить в него новые выбранные таблицы в качестве DataTables. – Radley

1

Написать эту линию после того, как вы сделали заселение в DataSource с новыми данными

dataGridView1.Refresh(); 

Вам не нужно, чтобы очистить DataGridView непосредственно. Его всегда обрабатывают путем изменения DataSourceDataGridView.

0

Если ничего не найдено в форме, вы можете просто позвонить InitializeComponent() еще раз. Но я думаю, что @Josh прав.

Смежные вопросы