您的位置:首页 > 其它

DataTable 的用法简介

2011-03-22 09:04 537 查看
本文转自:/article/4830239.html

先看示例代码:

viewsourceprint?

//PutthenextlineintotheDeclarationssection.
private
System.Data.DataSetdataSet;
private
void
MakeDataTables()
{
//Runallofthefunctions.
MakeParentTable();
MakeChildTable();
MakeDataRelation();
BindToDataGrid();
}
private
void
MakeParentTable()
{
//CreateanewDataTable.
System.Data.DataTabletable=
new
DataTable(
"ParentTable"
);
//DeclarevariablesforDataColumnandDataRowobjects.
DataColumncolumn;
DataRowrow;
//CreatenewDataColumn,setDataType,
//ColumnNameandaddtoDataTable.
column=
new
DataColumn();
column.DataType=System.Type.GetType(
"System.Int32"
);
column.ColumnName=
"id"
;
column.ReadOnly=
true
;
column.Unique=
true
;
//AddtheColumntotheDataColumnCollection.
table.Columns.Add(column);
//Createsecondcolumn.
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
;
//Addthecolumntothetable.
table.Columns.Add(column);
//MaketheIDcolumntheprimarykeycolumn.
DataColumn[]PrimaryKeyColumns=
new
DataColumn[1];
PrimaryKeyColumns[0]=table.Columns[
"id"
];
table.PrimaryKey=PrimaryKeyColumns;
//InstantiatetheDataSetvariable.
dataSet=
new
DataSet();
//AddthenewDataTabletotheDataSet.
dataSet.Tables.Add(table);
//CreatethreenewDataRowobjectsandadd
//themtotheDataTable
for
(
int
i=0;i<=2;i++)
{
row=table.NewRow();
row[
"id"
]=i;
row[
"ParentItem"
]=
"ParentItem"
+i;
table.Rows.Add(row);
}
}
private
void
MakeChildTable()
{
//CreateanewDataTable.
DataTabletable=
new
DataTable(
"childTable"
);
DataColumncolumn;
DataRowrow;
//CreatefirstcolumnandaddtotheDataTable.
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
;
//AddthecolumntotheDataColumnCollection.
table.Columns.Add(column);
//Createsecondcolumn.
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);
//Createthirdcolumn.
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);
//CreatethreesetsofDataRowobjects,
//fiverowseach,andaddtoDataTable.
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()
{
//DataRelationrequirestwoDataColumn
//(parentandchild)andaname.
DataColumnparentColumn=
dataSet.Tables[
"ParentTable"
].Columns[
"id"
];
DataColumnchildColumn=
dataSet.Tables[
"ChildTable"
].Columns[
"ParentID"
];
DataRelationrelation=
new
DataRelation(
"parent2Child"
,parentColumn,childColumn);
dataSet.Tables[
"ChildTable"
].ParentRelations.Add(relation);
}
private
void
BindToDataGrid()
{
//InstructtheDataGridtobindtotheDataSet,withthe
//ParentTableasthetopmostDataTable.
dataGrid1.SetDataBinding(dataSet,
"ParentTable"
);
}
DataTable的一些属性,如:

DataTabledt=newDataTable();

dt.Columns.Add("Name",typeof(string));

//增加一列,列名为Name

DataRowdr=dt.NewRow();

dr["Name"]="SpringYang";

dt.Rows.Add(dr);

//增加一行;

dt.Rows.Remove(dr);

//删除一行;

dt.Cloumns.Remove("Name");

删除一列

DataTabledtnew=dt.Copy();

dtnew指向的是dt所指向的内存地址,给dtnew操作也是对dt操作

只有这样:

DataTabledttwo=dt.Clone();

foreach(DataRowdrindt.Rows)

{

DataRownewdr=dttwo.NewRow();

newdr.ItemArray=dr.ItemArray;

dttwo.Rows.Add(newdr);

}

再对dttwo操作就不会修改dt了.这应该是值类型和引用类型的区别吧.

if($!=jQuery){
$=jQuery.noConflict();
}
varisLogined=true;
varcb_blogId=83225;
varcb_entryId=1968218;
varcb_blogApp="springyangwc";
varcb_blogUserGuid="146fcf3f-a706-e011-ac81-842b2b196315";
varcb_entryCreatedDate='2011/3/118:11:00';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: