在專案中經常用到datatable,如果datatable使用得當,不僅能使程式簡潔實用,而且能夠提高效能,達到事半功倍的效果,現對datatable的使用技巧進行一下總結。
一、datatable簡介
(1)建構函式
ø datatable()不帶引數初始化datatable類的新例項。
ø datatable(stringtablename)用指定的表名初始化datatable類的新例項。
ø datatable(stringtablename,stringtablenamespace)用指定的表名和命名空間初始化datatable類的新例項。
(2)常用屬性
ø casesensitive指示表中的字串比較是否區分大小寫。
ø childrelations獲取此datatable的子關係的集合。
ø columns獲取屬於該錶的列的集合。
ø constraints獲取由該錶維護的約束的集合。
ø defaultview獲取可能包括篩選檢視或游標位置的表的自定義檢視。
ø haserrors獲取乙個值,該值指示該錶所屬的dataset的任何表的任何行中是否有錯誤。
ø minimumcapacity獲取或設定該錶最初的起始大小。該錶中行的最初起始大小。預設值為50。
ø rows獲取屬於該錶的行的集合。
ø tablename獲取或設定datatable的名稱。
(3)常用方法
ø acceptchanges()提交自上次呼叫acceptchanges()以來對該錶進行的所有更改。
ø begininit()開始初始化在窗體上使用或由另乙個元件使用的datatable。初始化發生在執行時。
ø clear()清除所有資料的datatable。
ø clone()轉殖datatable的結構,包括所有datatable架構和約束。
ø endinit()結束在窗體上使用或由另乙個元件使用的datatable的初始化。初始化發生在執行時。
ø importrow(datarowrow)將datarow複製到datatable中,保留任何屬性設定以及初始值和當前值。
ø merge(datatabletable)將指定的datatable與當前的datatable合併。
ø newrow()建立與該錶具有相同架構的新datarow。
二、datatable使用技巧
(1)createadatatable
datatabledt=newdatatable("table_ax");
(2)addcolumnsfordatatable
//method1
dt.columns.add("column0",system.type.gettype("system.string"));
//method2
datacolumndc=newdatacolumn("column1",system.type.gettype("system.boolean"));
dt.columns.add(dc);
(3)addrowsfordatatable
//initializetherow
datarowdr=dt.newrow();
dr["column0"]="ax";
dr["column1"]=true;
dt.rows.add(dr);
//doesn'tinitializetherow
datarowdr1=dt.newrow();
dt.rows.add(dr1);
(4)selectrow
//searchthesecondrow如果沒有賦值,則用isnull來select
datarowdrs=dt.select("column1isnull");
datarowdrss=dt.select("column0='ax'");
(5)copydatatableincludedata
datatabledtnew=dt.copy();
(6)copydatatableonlyscheme
datatabledtonlyscheme=dt.clone();
(7)operateonerow
//對dt的操作
//method1
datarowdroperate=dt.rows[0];
droperate["column0"]="axzhz";
droperate["column1"]=false;
//method2
droperate[0]="axzhz";
droperate[1]=false;
//method3
dt.rows[0]["column0"]="axzhz";
dt.rows[0]["column1"]=false;
//method4
dt.rows[0][0]="axzhz";
dt.rows[0][1]=false;
(8)evaluateanotherdatatable'srowtocurrentdatatable
dtonlyscheme.rows.add(dt.rows[0].itemarray);
(9)converttostring
system.io.stringwritersw=newsystem.io.stringwriter();
system.xml.xmltextwriterxw=newsystem.xml.xmltextwriter(sw);
dt.writexml(xw);
strings=sw.tostring();
(10)filterdatatable
dt.defaultview.rowfilter="column1<>true";
dt.defaultview.rowfilter="column1=true";
(11)sortrow
dt.defaultview.sort="id,nameasc";
dt=dt.defaultview.totable();
(12)binddatatable
//繫結的其實是defaultview
gvtestdatatable.datasource=dt;
gvtestdatatable.databind();
(13)judgethedatatable』scolumnnameisastring
//判斷乙個字串是否為datatable的列名
dtinfo.columns.contains("ax");
(14)datatableconverttoxmlandxmlconverttodatatable
protectedvoidpage_load(objectsender,eventargse)
datatabledt_ax=newdatatable();
//dt_ax.columns.add("***",typeof(system.boolean));
//datarowdr=dt_ax.newrow();
//dr["***"]=true;
//dt_ax.rows.add(dr);
stringxml=convertbetweendatatableandxml_ax(dt_ax);
datatabledt=convertbetweendatatableandxml_ax(xml);
publicstringconvertbetweendatatableandxml_ax(datatabledtneedcoveret)
system.io.textwritertw=newsystem.io.stringwriter();
//iftablenameisempty,writexml()willthrowexception.
dtneedcoveret.tablename=dtneedcoveret.tablename.length==0?"table_ax":dtneedcoveret.tablename;
dtneedcoveret.writexml(tw);
dtneedcoveret.writexmlschema(tw);
returntw.tostring();
publicdatatableconvertbetweendatatableandxml_ax(stringxml)
system.io.textreadertrdatatable=newsystem.io.stringreader(xml.substring(0,xml.indexof("<?xml")));
system.io.textreadertrschema=newsystem.io.stringreader(xml.substring(xml.indexof("<?xml")));
datatabledtreturn=newdatatable();
dtreturn.readxmlschema(trschema);
dtreturn.readxml(trdatatable);
returndtreturn;
DataTable使用技巧總結
在專案中經常用到datatable,如果datatable使用得當,不僅能使程式簡潔實用,而且能夠提高效能,達到事半功倍的效果,現對datatable的使用技巧進行一下總結。一 datatable簡介 1 建構函式 datatable 不帶引數初始化datatable 類的新例項。datatable...
C 中DataTable的用法
分類 net 2009 03 11 16 16 175483人閱讀收藏 舉報 c dataset string constraints datatables 在專案中經常用到 datatable,如果datatable 使用得當,不僅能使程式簡潔實用,而且能夠提高效能,達到事半功倍的效果,現對 da...
C 中DataTable的用法
一 datatable 簡介 1 建構函式 datatable 不帶引數初始化 datatable 類的新例項。datatable string tablename 用指定的表名初始化 datatable 類的新例項。datatable string tablename,string tablena...