特別的好奇,我有兩個datagridview,一個顯示master,一個顯示detail,如果按照下面的方法可以master,detail都顯示正常。
DataGridView1.DataSource = dataSet
DataGridView1.DataMember = "master"
DataGridView2.DataSource = dataSet
DataGridView2.DataMember = "master.MasterDetail"
但是我還想有個文本框,輸入內容時,自動filtermaster,dataSet.Tables("master").DefaultView.RowFilter = "Partnumber Like '%" & TextBxSearch.Text & "%' " 發現文本框的內容沒法filter。
如果我不顯示master,detail,在填成datagirdview1時,DataGridView1.DataSource = dataSet.Tables("master")這樣填充,filter就很正常。研究了好久天都沒明白,為什么一用datasource,datamember就無法filter了。
代碼如下:
Private Sub LoadData()
Try
MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test.xlsx; Extended Properties=Excel 12.0;")
DAmaster = New System.Data.OleDb.OleDbDataAdapter("select Partnumber,Option,Description from [sheet1$] where partnumber=option", MyConnection)
DAdetail = New System.Data.OleDb.OleDbDataAdapter("select Partnumber,Option,Description from [sheet1$] where partnumber<>option", MyConnection)
dataSet = New System.Data.DataSet
DAmaster.Fill(dataSet, "master")
DAdetail.Fill(dataSet, "detail")
dataSet.Relations.Add("MasterDetail", dataSet.Tables("Master").Columns("Partnumber"), dataSet.Tables("Detail").Columns("Partnumber"))
'DataGridView1.DataSource = dataSet.Tables("master")
DataGridView1.DataSource = dataSet
DataGridView1.DataMember = "master"
DataGridView2.DataSource = dataSet
DataGridView2.DataMember = "master.MasterDetail"
DataGridView1.Refresh()
MyConnection.Close()
Catch ex As Exception
End Try
End Sub
Private Sub TextBxSearch_TextChanged(sender As Object, e As EventArgs) Handles TextBxSearch.TextChanged
dataSet.Tables("master").DefaultView.RowFilter = "Partnumber Like '%" & TextBxSearch.Text & "%' "
End Sub
End Class
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/78297.html
上一篇:VBA終止用戶的洗掉行/列操作
下一篇:VB串口通訊問題~
