- •Содержание
- •Введение
- •Класс DataView
- •Базовая информация
- •Конструкторы класса DataView
- •Свойства класса DataView
- •Методы класса DataView
- •События класса DataView
- •Пример использования DataView
- •Первый пример
- •Простой пример взаимодействия автономного DataTable и DataView
- •Более сложный пример с возможностью добавления записей и поиска
- •Заключение
- •Список литературы
- •Программный код примера №1
- •Программный код примера №2
- •Программный код примера №3
Программный код примера №2
using System;
using System.Data;
class Program
{
static void Main()
{
//
// Specify the column to sort on.
//
DataTable table = GetTable();
table.DefaultView.Sort = "ID";
//
// Display all records in the view.
//
DataView view = table.DefaultView;
Console.WriteLine("=== Sorted by ID ===");
for (int i = 0; i < view.Count; i++)
{
Console.WriteLine("{0},\t {1},\t {2}",
view[i][0],
view[i][1],
view[i][2]);
}
//
// Now sort on the Name.
//
view.Sort = "Town";
//
// Display all records in the view.
//
Console.WriteLine("=== Sorted by Town ===");
for (int i = 0; i < view.Count; i++)
{
Console.WriteLine("{0},\t {1},\t {2}",
view[i][0],
view[i][1],
view[i][2]);
}
Console.ReadLine();
}
/// <summary>
/// This example method generates a DataTable.
/// </summary>
static DataTable GetTable()
{
//
// Here we create a DataTable with four columns.
//
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("County", typeof(string));
table.Columns.Add("Town", typeof(string));
//
// Here we add unsorted data to the DataTable and return.
//
table.Rows.Add(1, "Россия", "Санкт-Петербург");
table.Rows.Add(2, "Россия", "Ставрополь");
table.Rows.Add(3, "Германия", "Бремен");
table.Rows.Add(15, "Россия", "Белгород");
table.Rows.Add(24, "Польша", "Прага");
return table;
}
}
Приложение 3
Программный код примера №3
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DataViewPrimer
{
public partial class Form1 : Form
{
DataTable dt; // Таблица.
DataColumn c1, c2; // Столбцы таблцы.
DataRow dr; // Строка таблицы.
DataView dv; // Вьюер таблицы.
DataRowView rv; // Вьюер строки таблицы.
int currentCounter; // Счетчик текущей строки для вьюера таблицы.
public Form1()
{
InitializeComponent();
CreateTable();
dG.DataSource = dv;
dGforTable.DataSource = dt;
currentCounter = 0;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
private void CreateTable()
{
dt = new DataTable("Cyti");
c1 = new DataColumn("id", Type.GetType("System.Int32"));
c1.AutoIncrement = true;
c2 = new DataColumn("Cyti", Type.GetType("System.String"));
dt.Columns.Add(c1);
dt.Columns.Add(c2);
DataColumn[] keyCol = new DataColumn[1];
keyCol[0] = c1;
dt.PrimaryKey = keyCol;
dr = dt.NewRow();
dr["Cyti"] = "Москва";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Cyti"] = "Санкт-Петербург";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Cyti"] = "Прага";
dt.Rows.Add(dr);
dt.AcceptChanges();
DataViewRowState dvrs = DataViewRowState.Added |
DataViewRowState.CurrentRows |
DataViewRowState.Deleted |
DataViewRowState.ModifiedCurrent |
DataViewRowState.Unchanged;
dv = new DataView(dt, "", "Cyti", dvrs);
}
private void buttPrev_Click(object sender, EventArgs e)
{
if (currentCounter - 1 >= 0) currentCounter--;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
private void buttNext_Click(object sender, EventArgs e)
{
if (currentCounter + 1 < dv.Count) currentCounter++;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
private void buttFirst_Click(object sender, EventArgs e)
{
currentCounter = 0;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
private void buttLast_Click(object sender, EventArgs e)
{
currentCounter =dv.Count - 1;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
private void dG_MouseDown(object sender, MouseEventArgs e)
{
currentCounter = dG.CurrentRowIndex;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
private void buttonFind_Click(object sender, EventArgs e)
{
int findIndex = -1;
findIndex = dv.Find(findTextBox.Text);
if (findIndex >= 0)
{
currentCounter = findIndex;
rv = dv[currentCounter];
demoTextBox.Text = rv["Cyti"].ToString();
}
else
{
findTextBox.Text = "Не нашли.";
}
}
private void buttonAdd_Click(object sender, EventArgs e)
{
if (rv.IsEdit || rv.IsNew) return;
rv = dv.AddNew();
rv["Cyti"] = findTextBox.Text;
}
private void buttonAcc_Click(object sender, EventArgs e)
{
rv.EndEdit();
dt.AcceptChanges();
}
}
}