VB.NET: Очистить DataGridView - PullRequest
       197

VB.NET: Очистить DataGridView

22 голосов
/ 07 февраля 2010

Я пробовал -

DataGridView1.DataSource=Nothing

и

DataGridView1.DataSource=Nothing
DataGridView1.Refresh()

и

DataGridView1.RefreshEdit()

Ни один из них не работает ..

Я написал метод, который устанавливает DataSource DataGridView при выполнении. но каждый раз, когда я выполняю его, он копирует данные с новым значением и добавляет его к предыдущему содержимому DGV.

Ответы [ 26 ]

0 голосов
/ 26 марта 2017

просто напишите это

DataGridView1.DataSource = ""
0 голосов
/ 15 июня 2014

При подаче информации из SQL-запроса в сетку данных вы можете сначала очистить сетку данных перед ее перезагрузкой.

Если я определил dbDataSet как новую таблицу данных, я могу сделать очистку. dbDataSet должен находиться в начале формы в общедоступной форме класса

Dim dbDataset AS New DataTable

в коде вашей частной подписки, место

dbDataSet.Clear()
0 голосов
/ 22 декабря 2017

Ошибка, которую вы делаете, заключается в том, что вы, похоже, используете объект набора данных для хранения ваших данных. Каждый раз, когда вы используете следующий код для помещения данных в ваш набор данных, вы добавляете данные к данным, уже имеющимся в вашем наборе данных.

myDataAdapter.Fill(myDataSet)

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

myDataGridView.DataSource = myDataSet.Tables(0)

Чтобы избежать репликации данных, вы должны вызывать метод clear для вашего объекта набора данных.

myDataSet.clear()

Затем назначьте таблицу в вашем наборе данных вашему объекту DataGridView. Код такой.

myDataSet.clear()
myDataAdapter.Fill(myDataSet)
myDataGridView.DataSource = myDataSet.Tables(0)

Вы можете попробовать этот код:

' clear previous data
DataGridView2.DataSource = Nothing
DataGridView2.DataMember = Nothing
DataGridView2.Refresh()
Try
    connection.Open()
    adapter1 = New SqlDataAdapter(sql, connection)
    ' clear data already in the dataset
    ds1.Clear()
    adapter1.Fill(ds1)
    DataGridView2.DataSource = ds1.Tables(0)
    connection.Close()
Catch ex As Exception
    MsgBox(ex.ToString)
End Try
0 голосов
/ 03 июля 2014

У вас может быть сценарий пользователя, такой, что вы хотите сохранить привязку данных и только временно очистить DataGridView. Например, пользователь нажимает на объект на карте, чтобы показать его атрибуты для редактирования. Он щелкает первый раз или уже щелкнул один и отредактировал его. Когда пользователь нажимает кнопку «Выбрать объект», вы хотите очистить DataGridView от данных из предыдущего объекта (и не выдавать ошибку, если это его первый выбор). В этом сценарии вы можете добиться чистого DataGridView, адаптируя сгенерированный код, который заполняет DataGridView. Предположим, сгенерированный код выглядит следующим образом:

    Try
        Me.Fh_maintTableAdapter.FillByHydrantNumber(Me.Fh2010DataSet.fh_maint, hydrantNum)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try

Мы заполняем DataGridView на основе номера гидранта. Скопируйте этот код в точку, где вы хотите очистить DataGridView и заменить значение «hydrantNum», которое, как вы знаете, не будет извлекать данные. Сетка очистится. И когда пользователь фактически выбирает объект (в данном случае, гидрант), привязка на месте для надлежащего заполнения DataGridView.

0 голосов
/ 07 февраля 2019

Используйте этот код везде, где вы хотите реализовать команду clear datagridview

datagridview1.datasource= nothing
datagridview1.datasource= ds
dt.clear()               'Dt as new DATATABLE
ds.clear()              'Ds as new Dataset

этот код очистит сетку данных и остановит дублирование данных при заполнении данных из базы данных.

0 голосов
/ 01 февраля 2012

Вы можете сделать так:

DataGridView1.Enable = false
DataGridView1.DataSource = Nothing
DataGridView1.Enable = true
...