在新搜索后从datagridview中删除以前的内容

时间:2014-09-26 12:19:25

标签: vb.net datagridview datatable

我正在编写一个小表单,在SQLite数据库上执行查询(查询可能在列方面有不同的结果),并通过数据网格视图显示结果,通过vb.net中的数据表

一切正常,唯一的问题是当我进行新搜索时,新结果会附加到旧搜索结果中。

如何实际重置datatable / datagridview并仅显示新结果?

我已经尝试过像datatable.Clear()这样的命令,但是这样做,在进行新搜索时,我只得到表头而没有结果

任何提示?

2 个答案:

答案 0 :(得分:0)

尝试使用以下三个步骤:

'step 1: fill DataSet
Dim dsYourDataSet As New DataSet("YourDataSet")
Dim daYourDataSet As New SqlDataAdapter(strYourSQLQuery, conn)
dsYourDataSet.Clear()
daYourDataSet.Fill(dsYourDataSet, "YourDataSet")

'step 2: delete every column in DataGridView
Me.dgvYourDataGridView.Columns.Clear()

'set 3: set DataSource of DataGridView
Me.dgvBolle.DataSource = dsBolla.Tables("YourDataSet")

使用DataTable可以获得相同的结果。

答案 1 :(得分:0)

我正在使用Linq,我每次都使用相同的sql字符串更新datagridview数据源。我没有得到附加内容,因为数据源从0开始并填充所有内容。

        Me.DataGridView1.DataSource = db.getSpareParts(cbox0043.Checked, cboxOnderSS.Checked, txtYnumber.Text, txtDescription.Text, cboxType.Text, cboxLocation.Text)
        Me.DataGridView1.Columns(0).HeaderText = "Y-nummer"
        Me.DataGridView1.Columns(0).Width = 65
        Me.DataGridView1.Columns(1).HeaderText = "Omschrijving"
        Me.DataGridView1.Columns(1).Width = 200

依旧......

,其中

Public Function getSpareParts(ByVal blnonstock As Boolean, ByVal blnunderSS As Boolean, Optional ynumber As String = "", Optional description As String = "", Optional type As String = "", Optional location As String = "") As IEnumerable
    Try
        Dim db = New DCDataContext
        Dim expr As IEnumerable = From spare In db.tblSpareParts Where spare.SparePartDeleted = False And If(ynumber = "", spare.SparePartDeleted = False, spare.SparePartYnumber.Contains(ynumber)) And If(description = "", spare.SparePartDeleted = False, spare.SparePartDescription.Contains(description) Or spare.SparePartRemarks.Contains(description)) And If(type = "", spare.SparePartDeleted = False, type = spare.SparePartType) And If(location = "", spare.SparePartDeleted = False, location = spare.SparePartLocation) And If(blnonstock = True, spare.SparePartLocation.StartsWith("0"), spare.SparePartDeleted = False) And If(blnunderSS = False, spare.SparePartDeleted = False, spare.SparePartCurrentStock < spare.SparePartMinimumStock)
        Select spare.SparePartYnumber, spare.SparePartDescription, spare.SparePartLocation, spare.SparePartType, spare.SparePartCurrentStock, spare.SparePartMinimumStock, spare.SparePartPrice, spare.SparePartRemarks, spare.SparePartLastModified, spare.SparePartUserName Order By SparePartYnumber Take 750
        Return expr
    Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Return Nothing
    End Try
End Function