rowState.Parse(rowState.GetType, cboRowState1.SelectedItem)
End Sub
Private Sub btnApply2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnApply2.Click
Dim sort As String
Dim rowState As DataViewRowState
' Указание фильтра.
dvView2.RowFilter = txtFilter2.Text
' Указание сортировки.
sort = cboSort2.SelectedItem
If chkDesc2.Checked Then
sort = sort & " DESC"
End If
dvView2.Sort = sort
' Указание состояние записи.
dvView2.RowStateFilter = rowState.Parse(rowState.GetType, _
cboRowState2.SelectedItem)
End Sub
End Class
Подпрограмма frmDataViews_Load инициализирует разные объекты формы. Сначала создается объект DataAdapter, который затем используется для загрузки данных из таблицы базы данных в таблицу Customers набора данных DataSet. Далее создаются два представления данных: одно будет содержать создаваемое по умолчанию представление, а другое — новое представление dvView2. Далее объект-представление dvView2 инициализируется для отображения всех текущих записей с сортировкой по фамилии, т.е. по полю LastName.
После этого инициализируются два набора полей со списками. В поле со списком cboSort загружается список имен полей таблицы Customers, а в поле со списком cboRowState — список значений перечисления DataViewRowState.
В Visual Basic больше не поддерживается свойство ItemData. Дело в том, что вместо него для преобразования значений перечисления в строки для загрузки их в поле со списком используется метод GetNames перечисления. Аналогично, метод Parse перечисления используется для преобразования строк в значения перечисления при присвоении избранных значений свойству RowStateFilter.
Затем для элементов управления с критериями отбора записей задаются значения по умолчанию, т.е. исходный порядок сортировки для обоих представлений задается по полю ID. Наконец, каждое представление связывается с одной из сеток данных, что приводит к отображению в них всех текущих данных.
Избранные значения критериев применяются для соответствующего представления после щелчка на кнопке Apply. Две подпрограммы btnApplyl_Click и btnApply2_Click идентичны, за исключением того, что они относятся к разным наборам элементов управления. Фильтр записей (значение свойства RowFilter) задается на основании указанного текста в текстовом поле txtFilter, порядок сортировки (значение свойства Sort) — на основании выбранного поля в поле со списком cboSort (с дополнительным модификатором DESC нисходящего порядка), а фильтр состояния записи (значение свойства RowStateFilter) — на основании значения в поле со списком cboRowState2. Изменение свойств представлений, связанных с сетками данных, приводит к автоматическому отображению данных с новыми параметрами представления.
Скомпонуем проект DataSetCode и запустим полученное приложение. Щелкните на кнопке Data Views для отображения новой формы frmDataViews. Внесите необходимые изменения в критерии сетки и щелкните на кнопке Apply для внесения этих изменений в соответствующую сетку. На рис. 7.4 показан пример отображения данных из одной таблицы в двух разных представлениях.
Попробуйте выбрать разные поля сортировки и состояния записей для организации разных представлений. Попробуйте использовать разные фильтры, например сложные выражения ID > 10 AND ID < 18 или LastName Like с. Более подробные сведения о правилах создания фильтров приводятся в разделе с описанием свойства DataColumn.Expression справки Visual Studio .NET.
Кроме того, сетки автоматически поддерживают операции вставки, изменения и удаления записей, поэтому попробуйте отредактировать записи и выбрать соответствующее состояние для отображения только измененных записей.
РИС. 7.4. Пример отображения данных из одной таблицы в двух разных представлениях формы frmDataViews