关于DataTable的某些用法

本文介绍了如何在DataTable中进行数据复制、添加新列并设置特定列的数据长度等实用技巧。

  /// <summary>
  /// 从DataTable里面复制数据到DataGrid、DataList,第一个参数是DataTalbe变量名,第二个参数是要复制的行数
  /// </summary>
  /// <param name="p_dtIn"></param>
  /// <param name="p_iRows"></param>
  /// <returns></returns>
  public static DataTable CopyRows(DataTable p_dtIn,int p_iRows)
  {
   DataTable dtOut;
   dtOut = p_dtIn.Clone();

   int iCount = p_dtIn.Rows.Count;
   int iCopy;
   if (iCount > p_iRows)
    iCopy = p_iRows;
   else
    iCopy = iCount;

   for(int i=0;i<iCopy;i++)
   {
    DataRow dr = p_dtIn.NewRow();
    dr = p_dtIn.Rows[i];

    DataRow drr = dtOut.NewRow();

    drr.ItemArray = dr.ItemArray;
    dtOut.Rows.Add(drr);
   }

   return dtOut;
  }
  
  /// <summary>
  /// 在DataTable里面添加一个新列并填充数据。
  /// </summary>
  /// <param name="p_dtIn"></param>
  /// <returns></returns>
  public static DataTable AddIndex(DataTable p_dtIn)
  {
   DataColumn myColumn = new DataColumn();
   myColumn.DataType = System.Type.GetType("System.Int16");
   myColumn.AllowDBNull = false;
   myColumn.Caption = "Idx";
   myColumn.ColumnName = "Idx";
   myColumn.DefaultValue = 0;
   p_dtIn.Columns.Add(myColumn);

   int iCount = p_dtIn.Rows.Count;
  
   for(int i=0;i<iCount;i++)
   {
    p_dtIn.Rows[i]["Idx"] = i + 1;
   }

   return p_dtIn;
  }

  /// <summary>
  /// 在DataTalbe里面添加一个新列并填充数据,并可以控制某一列数据的长度。
  /// </summary>
  /// <param name="p_dtIn"></param>
  /// <param name="p_strColunmName"></param>
  /// <param name="p_iLen"></param>
  /// <param name="bIf"></param>
  /// <returns></returns>
  public static DataTable AddIdxAndSetColumnLen(DataTable p_dtIn,string p_strColunmName,int p_iLen,bool bIf)
  {
   DataColumn myColumn = new DataColumn();
   myColumn.DataType = System.Type.GetType("System.Int16");
   myColumn.AllowDBNull = false;
   myColumn.Caption = "Idx";
   myColumn.ColumnName = "Idx";
   myColumn.DefaultValue = 0;
   p_dtIn.Columns.Add(myColumn);

   string strLoop;
   int iLen = p_iLen;
   string strLName;
   for(int i=0;i< p_dtIn.Rows.Count;i++)
   {
    p_dtIn.Rows[i]["Idx"] = i + 1;
    strLName = p_dtIn.Rows[i][p_strColunmName].ToString();
    if(strLName.Length > iLen)
    {
     strLoop = strLName.Substring(0,iLen);
     if(bIf != false)
      strLoop += "...";
     p_dtIn.Rows[i][p_strColunmName] = strLoop;
    }
   }

   return p_dtIn;
  }

  /// <summary>
  /// 在DATATABLE里面控制一列string数据的长度
  /// </summary>
  /// <param name="p_dtIn"></param>
  /// <param name="p_strColunmName">要控制的列名</param>
  /// <param name="p_iLen"></param>
  /// <param name="bIf"></param>
  /// <returns></returns>
  public static DataTable SetColumnLen(DataTable p_dtIn,string p_strColunmName,int p_iLen,bool bIf)
  {
   string strLoop;
   int iLen = p_iLen;
   string strLName;
   for(int i=0;i< p_dtIn.Rows.Count;i++)
   {
    strLName = p_dtIn.Rows[i][p_strColunmName].ToString();
    if(strLName.Length > iLen)
    {
     strLoop = strLName.Substring(0,iLen);
     if(bIf != false)
      strLoop += "...";
     p_dtIn.Rows[i][p_strColunmName] = strLoop;
    }
   }

   return p_dtIn;
  }

转载于:https://www.cnblogs.com/guoguihua/archive/2006/07/04/442827.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值