ADO.NET 2.0 - 如何使用 Find 方法搜尋 DataView 中的資料列

摘要: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