在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。 一、DataTable简介 (1)构造函数 Ø DataTable()不带参数初始化DataTable类的新实例。 Ø DataTable(stringtableName)用指定的表名初始化DataTable类的新实例。 Ø DataTable(stringtableName,stringtableNamespace)用指定的表名和命名空间初始化DataTable类的新实例。 (2)常用属性 Ø CaseSensitive指示表中的字符串比较是否区分大小写。 Ø ChildRelations获取此DataTable的子关系的集合。 Ø Columns获取属于该表的列的集合。 Ø Constraints获取由该表维护的约束的集合。 Ø DataSet获取此表所属的DataSet。DataSet相关信息,可见我以前的一篇文章《数据访问(2)-DataSet》 Ø 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 DataRow[]drs=dt.Select("column1isnull"); DataRow[]drss=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("Sex",typeof(System.Boolean)); //DataRowdr=dt_AX.NewRow(); //dr["Sex"]=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; } |
请发表评论