Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Примеры

В следующем примере создается объект DataTable с одним столбцом, происходит изменение данных, а затем с помощью свойства RowStateFilter класса DataView задается отображение различных наборов строк, в зависимости от DataViewRowState.

static private void DemonstrateRowState()

{

// Create a DataTable with one column.

DataTable dataTable = new DataTable("dataTable");

DataColumn dataColumn = new DataColumn("dataColumn");

dataTable.Columns.Add(dataColumn);

// Add ten rows.

DataRow dataRow;

for (int i = 0; i < 10; i++)

{

dataRow = dataTable.NewRow();

dataRow["dataColumn"] = "item " + i;

dataTable.Rows.Add(dataRow);

}

dataTable.AcceptChanges();

// Create a DataView with the table.

DataView dataView = new DataView(dataTable);

// Change one row's value:

dataTable.Rows[1]["dataColumn"] = "Hello";

// Add one row:

dataRow = dataTable.NewRow();

dataRow["dataColumn"] = "World";

dataTable.Rows.Add(dataRow);

// Set the RowStateFilter to display only added and modified rows.

dataView.RowStateFilter = DataViewRowState.Added

| DataViewRowState.ModifiedCurrent;

// Print those rows. Output = "Hello" "World";

PrintView(dataView, "ModifiedCurrent and Added");

// Set filter to display on originals of modified rows.

dataView.RowStateFilter = DataViewRowState.ModifiedOriginal;

PrintView(dataView, "ModifiedOriginal");

// Delete three rows.

dataTable.Rows[1].Delete();

dataTable.Rows[2].Delete();

dataTable.Rows[3].Delete();

// Set the RowStateFilter to display only Added and modified rows.

dataView.RowStateFilter = DataViewRowState.Deleted;

PrintView(dataView, "Deleted");

//Set filter to display only current.

dataView.RowStateFilter = DataViewRowState.CurrentRows;

PrintView(dataView, "Current");

// Set filter to display only unchanged rows.

dataView.RowStateFilter = DataViewRowState.Unchanged;

PrintView(dataView, "Unchanged");

// Set filter to display only original rows.

dataView.RowStateFilter = DataViewRowState.OriginalRows;

PrintView(dataView, "OriginalRows");

}

static private void PrintView(DataView dataView, string label)

{

Console.WriteLine("\n" + label);

for (int i = 0; i < dataView.Count; i++)

{

Console.WriteLine(dataView[i]["dataColumn"]);

}

}

DataViewкласс - примеры

В следующем примере создается простой объект DataTableс пятью строками и одним столбцом. Создаются два объекта DataView со свойствомRowStateFilter, задающим различные представления табличных данных для этих объектов. Затем значения распечатываются.

Язык C#

private void DemonstrateDataView()

{

// Create one DataTable with one column.

DataTable table = new DataTable("table");

DataColumn colItem = new DataColumn("item",

Type.GetType("System.String"));

table.Columns.Add(colItem);

// Add five items.

DataRow NewRow;

for(int i = 0; i <5; i++)

{

NewRow = table.NewRow();

NewRow["item"] = "Item " + i;

table.Rows.Add(NewRow);

}

// Change the values in the table.

table.Rows[0]["item"]="cat";

table.Rows[1]["item"] = "dog";

table.AcceptChanges();

// Create two DataView objects with the same table.

DataView firstView = new DataView(table);

DataView secondView = new DataView(table);

// Print current table values.

PrintTableOrView(table,"Current Values in Table");

// Set first DataView to show only modified

// versions of original rows.

firstView.RowStateFilter=DataViewRowState.ModifiedOriginal;

// Print values.

PrintTableOrView(firstView,"First DataView: ModifiedOriginal");

// Add one New row to the second view.

DataRowView rowView;

rowView=secondView.AddNew();

rowView["item"] = "fish";

// Set second DataView to show modified versions of

// current rows, or New rows.

secondView.RowStateFilter=DataViewRowState.ModifiedCurrent

| DataViewRowState.Added;

// Print modified and Added rows.

PrintTableOrView(secondView,

"Second DataView: ModifiedCurrent | Added");

}

private void PrintTableOrView(DataTable table, string label)

{

// This function prints values in the table or DataView.

Console.WriteLine("\n" + label);

for(int i = 0; i<table.Rows.Count;i++)

{

Console.WriteLine("\table" + table.Rows[i]["item"]);

}

Console.WriteLine();

}

private void PrintTableOrView(DataView view, string label)

{

// This overload prints values in the table or DataView.

Console.WriteLine("\n" + label);

for(int i = 0; i<view.Count;i++)

{

Console.WriteLine("\table" + view[i]["item"]);

}

Console.WriteLine();

}

В следующем примере создается объект DataView для заказов через Интернет, заказанных по общей сумме из запроса LINQ to DataSet:

Язык C#

DataTable orders = dataSet.Tables["SalesOrderHeader"];

EnumerableRowCollection<DataRow> query =

from order in orders.AsEnumerable()

where order.Field<bool>("OnlineOrderFlag") == true

orderby order.Field<decimal>("TotalDue")

select order;

DataView view = query.AsDataView();

bindingSource1.DataSource = view;