2016-12-09 53 views
0

我已經創建了一個文本框,並希望它通過名稱搜索客戶數據庫。大多數問題都使用外部數據集,但這只是使用在程序中使用csv文件創建的表。如何在使用數據表中的數據時過濾datagridview? VB.net

+2

添加相關代碼。 –

+1

你想要搜索還是要過濾? DataTables具有內置的過濾功能。因爲這太寬泛了 - 請閱讀[Ask]並參加[Tour] – Plutonix

+0

最簡單的方法是使用從DataTable創建的DateView作爲記錄源並使用Dataview的過濾器。 – rheitzman

回答

1

你可以利用BindingSource作爲DataGridView的DataSource。這樣,根據BindingSource Filter屬性,您可以根據您的列名稱設置任何類型的過濾器。

請檢查下面的代碼片段:

Dim dt As New DataTable("Sample") 
    dt.Columns.Add("Id") 
    dt.Columns.Add("TimeStamp") 

    For i As Int32 = 0 To 9999 
     dt.Rows.Add(New Object() {i, DateTime.Now}) 
    Next 

    Dim bs As New BindingSource 
    bs.DataSource = dt 

    bs.Filter = "Id > 10 AND Id < 20" 

    DataGridView1.DataSource = bs 

正如你所看到的,我已經定義了一個DataTable,有兩列,分別是「ID」和「時間戳」。然後,用一個簡單的循環,我用一些隨機記錄填充了我的DataTable,對於Id = 0到Id = 9999.

之後,我們聲明一個BindingSource,指定它的DataSource是我們的DataTable。在Bindinf源代碼中,我們可以使用Filter屬性,列名稱和公共邏輯運算符來設置任何過濾器。

在我的例子中,我要求過濾器上的唯一標識列,以可視化的ID是11和19之間

然後,我們可以使用的BindingSource作爲我們的DataGridView數據源的記錄。 請注意,在分配DataGridView數據源之前不需要應用過濾器:實際上,在綁定之後,每個過濾器應用程序將立即反映在可視化行上。

希望這會有幫助

+0

我可以對字符串和整數使用'.filter'命令嗎? – Hywel

+0

是的,假設你有一個名爲「Field」的字符串字段,你的Filter可以是:bs.Filter =「Field ='test'」,或者bs.Filter =「Field LIKE'%test%',如果你需要過濾儘管如此,你必須注意注射,所以最好避開與過濾器本身一致的字符串。希望這有助於 – hypnos

相關問題