guoguihua

关于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;
  }

posted on 2006-07-04 22:05  *蝈蝈*  阅读(950)  评论(0编辑  收藏  举报

导航