form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DataAdapter
{
public partial class Form2 : Form
{
private DataSet ds = new DataSet();
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
MakeParentTable();
MakeChildTable();
MakeDataRelation();
BindToDataGrid();
}
///
/// 创建父表
///
private void MakeParentTable()
{
//实例化一个表的对象,并命名为ParentTable
DataTable table = new DataTable("ParentTable");
//声明列和行的对象
DataColumn column;
DataRow row;
//创建新的列,上面是声明,下面才是实例化
column = new DataColumn();
//列的数据类型
column.DataType = System.Type.GetType("System.Int32");
//列的名称
column.ColumnName = "id";
//列的读写方式--只读
column.ReadOnly = true;
//指定列的内容受唯一限制(内容不能重复)
column.Unique = true;
//将设置好的列对象添加到DataTable中
table.Columns.Add(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;
table.Columns.Add(column);
////为表设置主键字段,首先选出要作为主键的字段添加到一个DataColumn集合中
////这也侧面说明DataTable里面也可以有多个主键字段
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
//上面已经把一个表构造弄好了,或者说一张表已经准备好了
//接下来就是实例化DataSet对象
ds.Tables.Add(table);
//现在ds中有一张ParentTable表,这长表有两个列,但是还是没有数据行
//下面就来添加三行数据
//行的实例化不能用new DataRow();因为是使用table的构架来实例一个新行
row = table.NewRow();
row["id"] = 1;
row["ParentItem"] = "父表的第1行数据";
//添加到表中去
table.Rows.Add(row);
row = table.NewRow();
row["id"] = 2;
row["ParentItem"] = "父表的第2行数据";
//添加到表中去
table.Rows.Add(row);
row = table.NewRow();
row["id"] = 3;
row["ParentItem"] = "父表的第3行数据";
//添加到表中去
table.Rows.Add(row);
}
private void MakeChildTable()
{
//实例化一个表的对象,并命名为ChildTable
DataTable table = new DataTable("ChildTable");
//声明列和行的对象
DataColumn column;
DataRow row;
//创建新的列,上面是声明,下面才是实例化
column = new DataColumn();
//列的数据类型
column.DataType = System.Type.GetType("System.Int32");
//列的名称
column.ColumnName = "ChildID";
column.Caption = "ID";
//列的读写方式--只读
column.AutoIncrement = true;
column.ReadOnly = true;
//指定列的内容受唯一限制(内容不能重复)
column.Unique = true;
//将设置好的列对象添加到DataTable中
table.Columns.Add(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);
//继续创建列
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对象
//ds = new DataSet();
ds.Tables.Add(table);
//为表创建15个行数据,注意ParentID列的值,正好对应父表中的三行
for (int j = 1; j