摘要:ADO.NET 2.0 - 如何使用 Find 方法搜尋 DataView 中的資料列
您可以使用 DataView 的 Find 方法來搜尋資料列,Find 方法共提供下表所示的兩個多載版本。
Find 方法的多載版本 |
Find(ByVal key As Object) As Integer |
Find(ByVal key() As Object) As Integer |
Find 方法會使用資料列的排序鍵值來搜尋資料列。也就是說,在您呼叫 Find 方法之前,務必先將 ApplyDefaultSort 屬性設定為 True 或是利用 Sort 屬性來設定排序順序,否則將會擲回例外狀況。舉例來說,如果您要搜尋「姓名」欄位為「章立民」的資料列,必須使用「姓名」欄位來排序資料,然後才能呼叫 Find 方法來進行搜尋,寫法如下所示:
DataView1.Sort = "姓名"
Dim rowIndex As Integer = DataView1.Find("章立民")
If rowIndex = -1 Then
MessageBox.Show("找不到您所搜尋的姓名")
Else
MessageBox.Show( _
DataView1(rowIndex)("姓名") & "的薪資是:" & _
DataView1(rowIndex)("目前薪資").ToString())
End If
從以上的寫法我們也可以發現,Find 方法會傳回所搜尋到之資料列的索引。如果有多筆資料列符合搜尋條件,則只會傳回第一筆符合搜尋條件之資料列的索引。如果找不到任何符合搜尋條件的資料列,則 Find 方法會傳回 -1。
Find 方法於搜尋資料值時,會根據來源 DataTable 之 CaseSensitive 屬性來決定是否考慮大小寫。搜尋值必須完全符合現有的排序索引鍵值,才能傳回結果。
請大家注意,如果您使用單一欄位來排序資料,請使用第一個版本的 Find 方法來搜尋排序鍵值,並將單一值傳遞給它。然而,如果您使用多個欄位來排序資料,請使用第二個版本的 Find 方法來搜尋排序鍵值,並將一個物件陣列傳遞給它,而且物件陣列中各個資料值的順序必須與 DataView 之 Sort 屬性中所指定的欄位順序相符。舉例來說,假設您要搜尋「行銷部」中姓名為「章立民」的員工資料,可以這樣寫:
DataView1.Sort = "部門, 姓名"
Dim TargetValues(1) As Object
TargetValues(0) = "行銷部"
TargetValues(1) = "章立民"
Dim rowIndex As Integer = DataView1.Find(TargetValues)
If rowIndex = -1 Then
MessageBox.Show("找不到您所搜尋的部門與姓名")
Else
MessageBox.Show( _
DataView1(rowIndex)("姓名") & "的薪資是:" & _
DataView1(rowIndex)("目前薪資").ToString())
End If