代码改变世界

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

2011-08-08 17:22  追忆似水流年  阅读(1172)  评论(0)    收藏  举报
/// <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;
}