DataTable

一、DataTable简介   

          (1)构造函数
          DataTable()   不带参数初始化DataTable 类的新实例。
          DataTable(
string tableName)  用指定的表名初始化DataTable 类的新实例。
          DataTable(
string tableName, string tableNamespace) 用指定的表名和命名空间初始化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(DataRow row)    将DataRow 复制到DataTable 中,保留任何属性设置以及初始值和当前值。
          Merge(DataTable table)  将指定的DataTable 与当前的DataTable 合并。
          NewRow()         创建与该表具有相同架构的新DataRow。

        二、DataTable使用技巧

      (
1)Create a DataTable
         DataTable dt
= new DataTable("Table_AX");

      (
2)Add columns for DataTable
       
//Method 1
        dt.Columns.Add("column0", System.Type.GetType("System.String"));
       
//Method 2
        DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
        dt.Columns.Add(dc);

       (
3)Add rows for DataTable
        
//Initialize the row
         DataRow dr = dt.NewRow();
         dr[
"column0"] = "AX";
         dr[
"column1"] = true;
         dt.Rows.Add(dr);
        
//Doesn't initialize the row
         DataRow dr1 = dt.NewRow();
         dt.Rows.Add(dr1); 

        (
4)Select row
        
//Search the second row 如果没有赋值,则用is null来select
         DataRow[] drs = dt.Select("column1 is null");
         DataRow[] drss
= dt.Select("column0 = 'AX'");

        (
5)Copy DataTable include data
         DataTable dtNew
= dt.Copy();

        (
6)Copy DataTable only scheme
         DataTable dtOnlyScheme
= dt.Clone();

        (
7)Operate one row
        
//对dt的操作
        
//Method 1
         DataRow drOperate = dt.Rows[0];
         drOperate[
"column0"] = "AXzhz";
         drOperate[
"column1"] = false;
        
//Method 2
         drOperate[0] = "AXzhz";
         drOperate[
1] = false;
        
//Method 3
         dt.Rows[0]["column0"] = "AXzhz";
         dt.Rows[
0]["column1"] = false;
        
//Method 4
         dt.Rows[0][0] = "AXzhz";
         dt.Rows[
0][1] = false;

       (
8)Evaluate another DataTable's row to current Datatable
         dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

       (
9)Convert to string
         System.IO.StringWriter sw
= new System.IO.StringWriter();
         System.Xml.XmlTextWriter xw
= new System.Xml.XmlTextWriter(sw);
         dt.WriteXml(xw);
        
string s = sw.ToString();

        (
10)Filter DataTable
         dt.DefaultView.RowFilter
= "column1 <> true";
         dt.DefaultView.RowFilter
= "column1 = true";

        (
11)Sort row
          dt.DefaultView.Sort
= "ID ,Name ASC";
          dt
=dt.DefaultView.ToTable();

         (
12)Bind DataTable
          
//绑定的其实是DefaultView
          gvTestDataTable.DataSource = dt;
          gvTestDataTable.DataBind();

         (
13)judge the DataTable’s Column name is a string
         
//判断一个字符串是否为DataTable的列名
         dtInfo.Columns.Contains("AX");

         (
14)DataTable convert to XML and XML convert to DataTable
         
protected void Page_Load(object sender, EventArgs e)
          {
             DataTable dt_AX
= new DataTable();
            
//dt_AX.Columns.Add("Sex", typeof(System.Boolean));
            
//DataRow dr = dt_AX.NewRow();
            
//dr["Sex"] = true;
            
//dt_AX.Rows.Add(dr);
             string xml=ConvertBetweenDataTableAndXML_AX(dt_AX);
             DataTable dt
= ConvertBetweenDataTableAndXML_AX(xml);
         }
        
public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret)
        {
             System.IO.TextWriter tw
= new System.IO.StringWriter();
            
//if TableName is empty, WriteXml() will throw Exception.                

dtNeedCoveret.TableName
=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
             dtNeedCoveret.WriteXml(tw);
             dtNeedCoveret.WriteXmlSchema(tw);
            
return tw.ToString();
        }
        
public DataTable ConvertBetweenDataTableAndXML_AX(string xml)
        {
             System.IO.TextReader trDataTable
= new System.IO.StringReader(xml.Substring(0, xml.IndexOf("<?xml")));
             System.IO.TextReader trSchema
= new System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
             DataTable dtReturn
= new DataTable();
             dtReturn.ReadXmlSchema(trSchema);
             dtReturn.ReadXml(trDataTable);
            
return dtReturn;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值