VB.NET:清空DataGridView

30

我已经尝试过-

DataGridView1.DataSource=Nothing

DataGridView1.DataSource=Nothing
DataGridView1.Refresh()

DataGridView1.RefreshEdit()

它们都不起作用。

我编写了一个方法,当执行时设置DataGridView的DataSource,但每次执行它时,它都会使用新值复制数据并将其附加到DGV的先前内容中...我想清除内容,然后添加值...这可能吗?

28个回答

72

如果DataGridView绑定了任何数据源,你需要将DataGridView的DataSource属性设置为Nothing

如果DataGridView没有绑定到任何数据源,这段代码就可以解决问题:

DataGridView.Rows.Clear()

1
如果这段代码抛出了“无法清除此列表”的错误,我建议采用以下方法: DataGridView.DataSource = Nothing然后刷新它: DataGridView.Refresh() - Curbside Coder

11

对于未限定的情况,请注意:

DataGridView.Rows.Clear()

保持“Columns”集合不变。

DataGridView.Columns.Clear()

..将删除所有列和行。如果您正在使用未绑定的DGV,并且在下一次使用时更改了列,则仅清除行可能不足够。对于库代码,请先清除所有列,然后再添加列。


谢天谢地,有人包含了清除未绑定网格的代码。我真的很高兴整个网格没有一个“清除”功能,那样太容易了。 - EllieK

8

我会选择使用这个...

DataGridView1.Rows.Clear()
清空行并重新绑定。

3
它说无法清除这个列表。 是因为我正在使用数据库表作为数据源吗? - Bibhas Debnath

4

按照以下简单的方法进行操作:

假设 ta 是一个 DataTable

ta.clear()
DataGridView1.DataSource = ta
DataGridView1.DataSource = Nothing

1
我发现将数据源设置为null会删除列。这是适用于我的方法:
c#:
((DataTable)myDataGrid.DataSource).Rows.Clear();

VB:

Call CType(myDataGrid.DataSource, DataTable).Rows.Clear()

点赞提及一个常见问题,其他答案没有尊重或者解决。 - Oak_3260548

1

你能否将datagridview绑定到一个空集合(而不是null)?这样可以解决问题吗?


1

当你搜索新结果时,要删除datagridview中的旧记录,使用button_click事件编写以下代码:

me.DataGridview1.DataSource.clear()

这段代码将帮助删除DataGridView中的旧记录。

1
不要在 DataGridView 上做任何操作,只需清除数据源。我尝试了清除 myDataset.clear() 方法,然后它起作用了。

最好解释为什么,而不仅仅是要做什么。 - edi9999

1
我的DataGridView也绑定了一个数据源,myDataGridView.Columns.Clear() 可以正常工作,但是myDataGridView.Rows.Clear() 却不行。对于那些尝试使用 .Rows 的人,这只是一个提示。

0
你犯的错误是似乎在使用数据集对象来存储数据。每次使用以下代码将数据放入数据集中时,都会将数据添加到已经存在于数据集中的数据中。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接