Прайс Кевин Т.
Шрифт:
Листинг 7.6. Код создания двух объектов-сеток для отображения разных представлений одной таблицы данных
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class frmDataViews
Inherits System.Windows.Forms.Form
"Windows Form Designer generated code"
Private dsCustomers As New DataSet
Private dvView2 As DataView
Private Sub frmDataViewS_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
Dim col As DataColumn
' Инициализация объекта DataAdapter.
Dim daCustomers As SqlDataAdapter = New _
SqlDataAdapter("select * from tblCustomer", _
"server=localhost;uid=sa;database=novelty")
' Вставка данных только в ОДНУ таблицу.
daCustomers.Fill(dsCustomers, "Customers")
' Создание второго объекта DataView.
dvView2 = New DataView(dsCustomers.Tables("Customer"), _
"", "LastName", DataViewRowState.CurrentRows)
' Вставка списка из имен полей.
For Each col In dsCustomers.Tables("Customers.Columns")
cboSort1.Items.Add(col.ColumnName)
cboSort2.Items.Add(col.ColumnName)
Next
' Вставка объекта DataViewRowState.
Dim names As String
names = DataViewRowState.None.GetNames(DataViewRowState.None.GetType)
For i = 0 To names.GetUpperBound(0)
cboRowState1.Items.Add(names(i))
cboRowState2.Items.Add(names(i))
Next
' Указание значений по умолчанию.
txtFilter1.Text = ""
txtFilter2.Text = ""
cboSort1.SelectedItem = "ID"
cboSort2.SelectedItem = "ID"
chkDesc1.Checked = False
chkDesc2.Checked = False
cboRowState1.SelectedItem = "CurrentRows"
cboRowState2.SelectedItem = "CurrentRows"
dsCustomers.Tables("Customers").DefaultView.Sort = "ID"
dvView2.Sort = "ID"
' Связывание сеток данных с таблицей.
DataGrid1.DataSource = dsCustomers.Tables("Customers").DefaultView
DataGrid2.DataSource = dvView2
End Sub
Private Sub btnApply1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnApply1.Click
Dim sort As String
Dim rowState As DataViewRowState
' Указание фильтра.
dsCustomers.Tables("Customers").DefaultView.RowFilter = _
txtFilter1.Text
' Указание сортировки.
sort = cboSort1.SelectedItem
If chkDesc1.Checked Then
sort = sort & " DESC"
End If
dsCustomers.Tables("Customers").DefaultView.Sort = sort
' Указание состояния записи.
dsCustomers.Tables("Customers").DefaultView.RowStateFilter = _
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
' Указание сортировки.