using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.Common;
public class DataTableLinkinDataGrid : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid dataGrid1;
private System.Data.DataSet dtSet;
public DataTableLinkinDataGrid()
{
this.dataGrid1 = new System.Windows.Forms.DataGrid();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
this.dataGrid1.DataMember = "";
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(16, 8);
this.dataGrid1.Size = new System.Drawing.Size(384, 240);
//
// DataTableLinkinDataGrid
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(416, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.dataGrid1});
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);
CreateCustomersTable();
CreateOrdersTable();
BindData();
}
[STAThread]
static void Main()
{
Application.Run(new DataTableLinkinDataGrid());
}
private void CreateCustomersTable()
{
System.Data.DataTable custTable = new DataTable("Customers");
DataColumn dtColumn;
DataRow myDataRow;
dtColumn = new DataColumn();
dtColumn.DataType = System.Type.GetType("System.Int32");
dtColumn.ColumnName = "id";
dtColumn.Caption = "Cust ID";
dtColumn.ReadOnly = true;
dtColumn.Unique = true;
custTable.Columns.Add(dtColumn);
dtColumn = new DataColumn();
dtColumn.DataType = System.Type.GetType("System.String");
dtColumn.ColumnName = "Name";
dtColumn.Caption = "Cust Name";
dtColumn.AutoIncrement = false;
dtColumn.ReadOnly = false;
dtColumn.Unique = false;
custTable.Columns.Add(dtColumn);
dtColumn = new DataColumn();
dtColumn.DataType = System.Type.GetType("System.String");
dtColumn.ColumnName = "Address";
dtColumn.Caption = "Address";
dtColumn.ReadOnly = false;
dtColumn.Unique = false;
custTable.Columns.Add(dtColumn);
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = custTable.Columns["id"];
custTable.PrimaryKey = PrimaryKeyColumns;
dtSet = new DataSet("Customers");
dtSet.Tables.Add(custTable);
myDataRow = custTable.NewRow();
myDataRow["id"] = 1001;
myDataRow["Address"] = "address 1";
myDataRow["Name"] = "G";
custTable.Rows.Add(myDataRow);
myDataRow = custTable.NewRow();
myDataRow["id"] = 1002;
myDataRow["Name"] = "R";
myDataRow["Address"] = "address 2";
custTable.Rows.Add(myDataRow);
myDataRow = custTable.NewRow();
myDataRow["id"] = 1003;
myDataRow["Name"] = "M";
myDataRow["Address"] = "address 3";
custTable.Rows.Add(myDataRow);
}
private void CreateOrdersTable()
{
DataTable ordersTable = new DataTable("Orders");
DataColumn dtColumn;
DataRow dtRow;
dtColumn = new DataColumn();
dtColumn.DataType= System.Type.GetType("System.Int32");
dtColumn.ColumnName = "OrderId";
dtColumn.AutoIncrement = true;
dtColumn.Caption = "Order ID";
dtColumn.ReadOnly = true;
dtColumn.Unique = true;
ordersTable.Columns.Add(dtColumn);
dtColumn = new DataColumn();
dtColumn.DataType= System.Type.GetType("System.String");
dtColumn.ColumnName = "Name";
dtColumn.Caption = "Item Name";
ordersTable.Columns.Add(dtColumn);
// Create CustId column which reprence CustId from
// the custTable
dtColumn = new DataColumn();
dtColumn.DataType= System.Type.GetType("System.Int32");
dtColumn.ColumnName = "CustId";
dtColumn.AutoIncrement = false;
dtColumn.Caption = "CustId";
dtColumn.ReadOnly = false;
dtColumn.Unique = false;
ordersTable.Columns.Add(dtColumn);
dtColumn = new DataColumn();
dtColumn.DataType= System.Type.GetType("System.String");
dtColumn.ColumnName = "Description";
dtColumn.Caption = "Description Name";
ordersTable.Columns.Add(dtColumn);
dtSet.Tables.Add(ordersTable);
dtRow = ordersTable.NewRow();
dtRow["OrderId"] = 0;
dtRow["Name"] = "Book";
dtRow["CustId"] = 1001 ;
dtRow["Description"] = "desc 1" ;
ordersTable.Rows.Add(dtRow);
dtRow = ordersTable.NewRow();
dtRow["OrderId"] = 1;
dtRow["Name"] = "Book";
dtRow["CustId"] = 1001 ;
dtRow["Description"] = "desc 2" ;
ordersTable.Rows.Add(dtRow);
}
private void BindData()
{
DataRelation dtRelation;
DataColumn CustCol = dtSet.Tables["Customers"].Columns["id"];
DataColumn orderCol = dtSet.Tables["Orders"].Columns["CustId"];
dtRelation = new DataRelation("CustOrderRelation", CustCol, orderCol);
dtSet.Tables["Orders"].ParentRelations.Add(dtRelation);
dataGrid1.SetDataBinding(dtSet,"Customers");
}
}