27

我试过了 -

DataGridView1.DataSource=Nothing

DataGridView1.DataSource=Nothing
DataGridView1.Refresh()

DataGridView1.RefreshEdit()

他们都没有工作..

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

4

28 回答 28

70

如果 DataGridView 绑定到任何数据源,则必须将 DataGridView 的DataSource属性设置为Nothing.

如果 DataGridView 未绑定到任何数据源,则此代码可以解决问题:

DataGridView.Rows.Clear()
于 2010-09-16T12:55:18.853 回答
10

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

DataGridView.Rows.Clear()

保留 Columns 集合。

DataGridView.Columns.Clear()

..将删除所有列和行。如果您使用的是未绑定的 DGV,并且在下次使用时更改了列,则清除行可能还不够。对于库代码,在添加列之前清除所有列。

于 2013-04-08T20:38:20.930 回答
8

我大概会用这个...

DataGridView1.Rows.Clear()

清除行然后重新绑定。

于 2010-02-07T15:12:42.377 回答
4

按照这样的简单方法

假设这ta是一个DataTable

ta.clear()
DataGridView1.DataSource = ta
DataGridView1.DataSource = Nothing
于 2013-01-24T15:02:50.143 回答
1

您能否不将 datagridview 绑定到空集合(而不是 null)。这样做的伎俩?

于 2010-02-07T15:13:17.100 回答
1

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

me.DataGridview1.DataSource.clear()

此代码将有助于删除 datagridview 中的旧记录。

于 2013-05-31T16:14:20.270 回答
1

我发现将数据源设置为 null 会删除列。这对我有用:

C#:

((DataTable)myDataGrid.DataSource).Rows.Clear();

VB:

Call CType(myDataGrid.DataSource, DataTable).Rows.Clear()
于 2013-09-04T19:00:21.683 回答
1

不做任何事情DataGridView,只是清除数据源。我尝试了清除myDataset.clear()方法,然后它起作用了。

于 2014-06-07T12:03:36.097 回答
1

我的 DataGridView 也绑定到 DataSource 并且myDataGridView.Columns.Clear()工作正常但myDataGridView.Rows.Clear()没有。对于那些尝试过的人来说,仅供参考.Rows

于 2015-06-25T12:54:16.727 回答
0

我有这个代码在 Windows 窗体中工作,

Public Class Form1

    Private dataStuff As List(Of String)


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataGridView1.DataSource = Nothing

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        dataStuff = New List(Of String)

        dataStuff.Add("qwerty")
        dataStuff.Add("another")
        dataStuff.Add("...and another")

        DataGridView1.DataSource = dataStuff
    End Sub
End Class
于 2010-02-07T15:22:35.210 回答
0

如果数据网格绑定到某个数据表,您应该从数据集中删除该表。您的 Gridview 将被自动清除。别无退路。

[YourDatasetName].Tables.Clear()
于 2012-01-03T05:10:55.877 回答
0

我在gridview内容清除上遇到了同样的问题。我使用的数据源是一个没有列的数据表,我以编程方式将列和行添加到数据表中。然后绑定到datagridview。我尝试了与 gridview 相关的代码,例如gridView.Rows.Clear()gridView.DataSource = Nothing

但这对我不起作用。然后在每次将其绑定到datagridview之前尝试以下与datatable相关的代码。

  dtStore.Rows.Clear()
  dtStore.Columns.Clear()
  gridView.DataSource = dtStore

并且工作正常,DataGridView 中没有复制

于 2013-10-28T09:54:40.200 回答
0

1) 创建名为 Clear.Inside 的按钮,插入以下代码 datagridviewer.DataSource=nothing

2)在您的搜索按钮中,通过以下语句开始您的代码

datagridviewer.DataSource = DataSet.table

Nb:而不是表把你的表的真实名称前:datagridviewer.DataSource = DataSet.client

于 2014-03-07T13:50:09.627 回答
0

将来自 SQL 查询的信息馈送到 datagridview 时,您可以先清除 datagridview,然后再重新加载它。

在我将 dbDataSet 定义为 New DataTable 的地方我可以做一个明确的说明。dbDataSet 必须位于公共类表单中的表单开头

Dim dbDataset AS New DataTable

在您的 Private Sub 代码中,放置

dbDataSet.Clear()
于 2014-06-15T07:21:36.050 回答
0

您可能有一个用户场景,例如您希望保留数据绑定并仅暂时清除 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。

于 2014-07-03T15:04:38.867 回答
0

如果 DataGridView 绑定到任何数据源,

DataGridView1.DataSource = Nothing
DataGridView1.DataBind()
于 2014-09-10T14:18:43.603 回答
0
Dim DS As New DataSet

DS.Clear() - DATASET clear 比DataGridView.Rows.Clear()我更有效:

Public Sub doQuery(sql As String)
   Try
        DS.Clear()  '<-- here
        '   - CONNECT -
        DBCon.Open()
        '   Cmd gets SQL Query
        Cmd = New OleDbCommand(sql, DBCon)
        DA = New OleDbDataAdapter(Cmd)
        DA.Fill(DS)
        '   - DISCONNECT -
        DBCon.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
于 2015-09-04T10:45:16.700 回答
0

如果GridView(Say the name is gvArchive) 绑定到 any DataSource,以下将清除它:

gvArchive.DataSource = Nothing

gvArchive.DataBind()
于 2016-04-11T17:44:31.353 回答
0

写这个

DataGridView1.DataSource = ""
于 2017-03-26T10:20:59.153 回答
0

我遇到了同样的问题:我以编程方式将我的 GridView1 绑定到一个 SQL 表 [ditonary] 或另一个 [meny] 但是当我从 RadioButtonList1 中选择第二个表时,出现错误(System.Web.HttpException:字段或属性在选定的数据源中找不到标题[先前选择的表中的第一列的标题]。​​)即说我的第一个选择的表中的列无法找到。我需要做的就是插入:

GridView1.Columns.Clear()

在添加表格列之前。这是完整的代码:

Dim connectionString As String = "your-string-details"
Dim connection As New SqlConnection(connectionString)

然后是你的第一个子:

Private Sub BindOrders()
    connection.Open()

    Dim sqlCommand As String = "SELECT * FROM [dictionary]" 
    Dim dataAdapter As New SqlDataAdapter(sqlCommand, connection)
    Dim dt As New DataTable() 
    dataAdapter.Fill(dt)

    GridView1.Columns.Clear() ' clear columns before adding new ones

    If GridView1.Columns.Count <= 0 Then
        Dim Field As New BoundField()
        Field.DataField = "id"
        Field.HeaderText = "id"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "strArHundreds"
        Field.HeaderText = "strArHundreds"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "strArTens"
        Field.HeaderText = "strArTens"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "strArSingles"
        Field.HeaderText = "strArSingles"
        GridView1.Columns.Add(Field)
    End If

    GridView1.DataSource = dt
    GridView1.DataBind()

    connection.Close()
End Sub

然后是你的第二个子:

Private Sub BindDocuments()
    connection.Open()

    Dim sqlCommand As String = "SELECT * FROM [meny]"
    Dim dataAdapter As New SqlDataAdapter(sqlCommand, connection)
    Dim dt As New DataTable()

    dataAdapter.Fill(dt)

    GridView1.Columns.Clear() ' clear columns before adding new ones

    If GridView1.Columns.Count <= 0 Then
        Dim Field As New BoundField
        Field = New BoundField
        Field.DataField = "id"
        Field.HeaderText = "id"
        GridView1.Columns.Add(Field)

        Field = New BoundField
        Field.DataField = "nazev"
        Field.HeaderText = "nazev"
        GridView1.Columns.Add(Field)
    End If

    GridView1.DataSource = dt
    GridView1.DataBind()

    connection.Close()
End Sub

最后是你的 RadioButton:

Protected Sub RadioButtonList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RadioButtonList1.SelectedIndexChanged
    Dim index As Integer
    index = RadioButtonList1.SelectedIndex
    Select Case index
        Case 0
            BindOrders()
            Exit Select
        Case 1
            BindDocuments()
            Exit Select
    End Select
End Sub

为了完成,这里是关联 aspx.file 中 GridView1 和 RadioButtonList1 的代码:

<asp:RadioButtonList ID="RadioButtonList1"
    runat="server"
    AutoPostBack="True"
    OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged">
    <asp:ListItem>Obraty</asp:ListItem>
    <asp:ListItem>Dokumenty</asp:ListItem>
</asp:RadioButtonList>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
</asp:GridView>

现在这一切都很好。

于 2017-09-20T12:57:47.903 回答
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
于 2017-12-22T19:45:51.310 回答
0

在您想实现 clear datagridview 命令的任何地方使用此代码

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

此代码将清除 datagridview 并在从数据库填充数据时停止数据重复。

于 2019-02-07T04:46:06.873 回答
-1

你可以这样做:

DataGridView1.Enable = false
DataGridView1.DataSource = Nothing
DataGridView1.Enable = true
于 2012-02-01T09:21:22.650 回答
-1

要清除网格视图数据,您必须清除数据集或数据表

我使用此代码我清除网格视图数据,即使重新提交一次又一次它会工作示例 Dim con As New OleDbConnection Dim cmd As New OleDbCommand Dim da As New OleDbDataAdapter Dim dar As OleDbDataReader Dim dt As New DataTable If (con.State <> 1) Then con.Open() End If dt.Clear() '每次清除数据到新数据 cmd.Connection = con cmd.CommandText = "select * from users" da.SelectCommand = cmd da.Fill( dt) DataGridView1.DataSource = dt DataGridView1.Visible = True

    cmd.Dispose()
    con.Close()
于 2014-02-24T10:56:27.440 回答
-1

您只能通过以下两行来做到这一点:

DataGridView1.DataSource=Nothing
DataGridView1.DataBind()
于 2016-06-07T07:42:21.817 回答
-1

如果要清除 DataGridView 中的所有数据,也可以尝试此代码

DataGridView1.DataSource.Clear()
于 2018-03-07T03:22:50.017 回答
-1

试试这个特定的单元格:

Datagrid.Rows(RowIndex).Cells(ColIndex).Value = DBNull.Value
于 2020-06-15T17:04:30.790 回答
-1

DgRemolques 是我在 WPF 上的数据网格的名称

dgRemolques.ItemsSource = 没有,但我还需要清理数据表 dtRemolques.Clear()

于 2021-10-22T16:42:36.963 回答