将DataTable进行分页并生成新的DataTable

时间:2021-05-30 04:50:00
///   <summary>
///  将DataTable进行分页并生成新的DataTable
///   </summary>
///   <param name="dt"> 原DataTable </param>
///   <param name="PageIndex"> 需要的第n页 </param>
///   <param name="PageSize"> 每页页数 </param>
///   <returns> 新的DataTable </returns>
public  DataTable GetPagedTable(DataTable dt,  int  PageIndex,  int  PageSize)
{
     
if  (PageIndex  ==   0 )
     {
           
return  dt;
     }
     DataTable newdt 
=  dt.Copy();
     newdt.Clear();
     
// 起始行数
      int  rowbegin  =  (PageIndex  -   1 *  PageSize;
      
// 结束行数
      int  rowend  =  PageIndex  *  PageSize;

     
if  (rowbegin  >=  dt.Rows.Count)
     {
         
return  newdt;
     }

     
if  (rowend  >  dt.Rows.Count)
     {
         rowend 
=  dt.Rows.Count;
     }
     
// 生成新的DataTable
      for  ( int  i  =  rowbegin; i  <=  rowend  -   1 ; i ++ )
     {
          DataRow newdr 
=  newdt.NewRow();
          DataRow dr 
=  dt.Rows[i];
          
foreach  (DataColumn column  in  dt.Columns)
          {
              newdr[column.ColumnName] 
=  dr[column.ColumnName];
          }
          newdt.Rows.Add(newdr);
      }
      
return  newdt;
}