ADO.Net中DataSet和DataSet的子集Datatable.

DataSet是包含一个或者多个DataTable的集合。

DataTable官方文档,原文地址:https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datatable?view=netframework-4.8

创建一个只有两列的表的结构,如下步骤:

    1.创建一个DataTable:

    System.Data.DataTable table = new DataTable("ParentTable");

     DataColumn column;

     DataRow row;

    2.添加两列column

column = new DataColumn();

column.DataType = System.Type.GetType("System.Int32");

column.ColumnName = "id";

column.ReadOnly = true;

column.Unique = true;

// Add the Column to the DataColumnCollection.

table.Columns.Add(column);

 

// Create second column. column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "ParentItem"; column.AutoIncrement = false; column.Caption = "ParentItem"; column.ReadOnly = false; column.Unique = false; // Add the column to the table. table.Columns.Add(column);

    3.创建一个DataSet,并把DataTable加入到DataSet中。

dataSet = new DataSet();

// Add the new DataTable to the DataSet.

dataSet.Tables.Add(table);

    4.在创建好的表中插入数据,如下:

for (int i = 0; i<= 2; i++) { row = table.NewRow(); row["id"] = i;

row["ParentItem"] = "ParentItem " + i; table.Rows.Add(row); }

Dataview:  DataView firstView = new DataView(table);

DataView代表 DataTable 的可绑定数据的自定义视图,它用于排序、筛选、搜索、编辑和导航。 DataView 不存储数据,而改为表示对应的 DataTable 的连接视图。 更改 DataView 的数据会影响 DataTable 更改 DataTable 的数据将影响与之关联的所有 DataView

   例如,DataView中的升序和降序:

DataView view = new DataView(locationTable);

// Sort by State and ZipCode column in descending order view.Sort = "State ASC, ZipCode ASC";

DataView官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.data.dataview?view=netframework-4.8

 

// Put the next line into the Declarations section.private System.Data.DataSet dataSet; private void MakeDataTables() { // Run all of the functions. MakeParentTable(); MakeChildTable(); MakeDataRelation(); BindToDataGrid(); } private void MakeParentTable() { // Create a new DataTable. System.Data.DataTable table = new DataTable("ParentTable"); // Declare variables for DataColumn and DataRow objects. DataColumn column; DataRow row; // Create new DataColumn, set DataType, // ColumnName and add to DataTable. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "id"; column.ReadOnly = true; column.Unique = true; // Add the Column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "ParentItem"; column.AutoIncrement = false; column.Caption = "ParentItem"; column.ReadOnly = false; column.Unique = false; // Add the column to the table. table.Columns.Add(column); // Make the ID column the primary key column. DataColumn[] PrimaryKeyColumns = new DataColumn[1]; PrimaryKeyColumns[0] = table.Columns["id"]; table.PrimaryKey = PrimaryKeyColumns; // Instantiate the DataSet variable. dataSet = new DataSet(); // Add the new DataTable to the DataSet. dataSet.Tables.Add(table); // Create three new DataRow objects and add // them to the DataTablefor (int i = 0; i<= 2; i++) { row = table.NewRow(); row["id"] = i; row["ParentItem"] = "ParentItem " + i; table.Rows.Add(row); } } private void MakeChildTable() { // Create a new DataTable. DataTable table = new DataTable("childTable"); DataColumn column; DataRow row; // Create first column and add to the DataTable. column = new DataColumn(); column.DataType= System.Type.GetType("System.Int32"); column.ColumnName = "ChildID"; column.AutoIncrement = true; column.Caption = "ID"; column.ReadOnly = true; column.Unique = true; // Add the column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType= System.Type.GetType("System.String"); column.ColumnName = "ChildItem"; column.AutoIncrement = false; column.Caption = "ChildItem"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); // Create third column. column = new DataColumn(); column.DataType= System.Type.GetType("System.Int32"); column.ColumnName = "ParentID"; column.AutoIncrement = false; column.Caption = "ParentID"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); dataSet.Tables.Add(table); // Create three sets of DataRow objects, // five rows each, and add to DataTable.for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i; row["ChildItem"] = "Item " + i; row["ParentID"] = 0 ; table.Rows.Add(row); } for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i + 5; row["ChildItem"] = "Item " + i; row["ParentID"] = 1 ; table.Rows.Add(row); } for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i + 10; row["ChildItem"] = "Item " + i; row["ParentID"] = 2 ; table.Rows.Add(row); } } private void MakeDataRelation() { // DataRelation requires two DataColumn // (parent and child) and a name. DataColumn parentColumn = dataSet.Tables["ParentTable"].Columns["id"]; DataColumn childColumn = dataSet.Tables["ChildTable"].Columns["ParentID"]; DataRelation relation = new DataRelation("parent2Child", parentColumn, childColumn); dataSet.Tables["ChildTable"].ParentRelations.Add(relation); } private void BindToDataGrid() { // Instruct the DataGrid to bind to the DataSet, with the // ParentTable as the topmost DataTable. dataGrid1.SetDataBinding(dataSet,"ParentTable"); }

posted @ 2020-04-14 20:18  留下成长的足迹  阅读(224)  评论(0编辑  收藏  举报