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