我正在编写一个小表单,在SQLite数据库上执行查询(查询可能在列方面有不同的结果),并通过数据网格视图显示结果,通过vb.net中的数据表
一切正常,唯一的问题是当我进行新搜索时,新结果会附加到旧搜索结果中。
如何实际重置datatable / datagridview并仅显示新结果?
我已经尝试过像datatable.Clear()这样的命令,但是这样做,在进行新搜索时,我只得到表头而没有结果
任何提示?
答案 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