Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете искать строки в соответствии со значениями ключей сортировки, используя методы Find и FindRowsDataView. Конфиденциальность регистра значений поиска в методах Find иFindRows определяется свойством CaseSensitive базового DataTableобъекта. Значения поиска должны соответствовать существующим значениям ключа сортировки в целом, чтобы вернуть результат.
Метод Find возвращает целое число с индексом DataRowView , соответствующим условиям поиска. Если несколько строк соответствуют критериям поиска, возвращается только индекс первого соответствующего объекта DataRowView . Если совпадения не найдены, функция "Найти " возвращает значение -1.
Чтобы вернуть результаты поиска, соответствующие нескольким строкам, используйте метод FindRows . FindRows работает так же, как метод Find , за исключением того, что он возвращает массив DataRowView , который ссылается на все соответствующие строки в DataView. Если совпадения не найдены, массив DataRowView будет пустым.
Чтобы использовать методы Find или FindRows, необходимо указать порядок сортировки либо путем установки ApplyDefaultSort в true, либо с помощью свойства Sort. Если порядок сортировки не указан, создается исключение.
Методы Find иFindRows принимают массив значений в качестве входных данных, длина которых соответствует количеству столбцов в порядке сортировки. В случае сортировки по одному столбцу можно передать одно значение. Для порядка сортировки, содержащего несколько столбцов, передайте массив объектов. Обратите внимание, что для сортировки по нескольким столбцам значения в массиве объектов должны соответствовать порядку столбцов, указанных в свойстве Sort объекта DataView.
В следующем примере кода показан метод Find , вызываемый для DataView с одним порядком сортировки столбцов.
Dim custView As DataView = _
New DataView(custDS.Tables("Customers"), "", _
"CompanyName", DataViewRowState.CurrentRows)
Dim rowIndex As Integer = custView.Find("The Cracker Box")
If rowIndex = -1 Then
Console.WriteLine("No match found.")
Else
Console.WriteLine("{0}, {1}", _
custView(rowIndex)("CustomerID").ToString(), _
custView(rowIndex)("CompanyName").ToString())
End If
DataView custView = new DataView(custDS.Tables["Customers"], "",
"CompanyName", DataViewRowState.CurrentRows);
int rowIndex = custView.Find("The Cracker Box");
if (rowIndex == -1)
Console.WriteLine("No match found.");
else
Console.WriteLine("{0}, {1}",
custView[rowIndex]["CustomerID"].ToString(),
custView[rowIndex]["CompanyName"].ToString());
Если свойство Sort задает несколько столбцов, необходимо передать массив объектов со значениями поиска для каждого столбца в порядке, указанном свойством Sort , как показано в следующем примере кода.
Dim custView As DataView = _
New DataView(custDS.Tables("Customers"), "", _
"CompanyName, ContactName", _
DataViewRowState.CurrentRows)
Dim foundRows() As DataRowView = _
custView.FindRows(New object() {"The Cracker Box", "Liu Wong"})
If foundRows.Length = 0 Then
Console.WriteLine("No match found.")
Else
Dim myDRV As DataRowView
For Each myDRV In foundRows
Console.WriteLine("{0}, {1}", _
myDRV("CompanyName").ToString(), myDRV("ContactName").ToString())
Next
End If
DataView custView = new DataView(custDS.Tables["Customers"], "",
"CompanyName, ContactName",
DataViewRowState.CurrentRows);
DataRowView[] foundRows =
custView.FindRows(new object[] {"The Cracker Box", "Liu Wong"});
if (foundRows.Length == 0)
Console.WriteLine("No match found.");
else
foreach (DataRowView myDRV in foundRows)
Console.WriteLine("{0}, {1}", myDRV["CompanyName"].ToString(),
myDRV["ContactName"].ToString());