DataTable對象翻頁功能 DataTablePagination


項目一直都是用的存儲過程分頁的

今天做了一個功能  用到了翻頁  但是代碼都是一模一樣的 用到此功能上 翻頁就是異常  每次翻頁對象都是亂套的

調試查看數據庫返回結果都是正確的數據  翻頁功能還是封裝編譯了 無奈之下  自己編寫此DataTable對象的翻頁功能

能用存儲過程分頁的 一定要用存儲過程 因為DataTable分頁是要把數據全部從數據庫讀取出來再進行處理的 太消耗資源 得不償失

 

代碼入下

 

// ===================================================================
// 創建時間:2012年2月22日, PM 02:53:02
// 描述:DataTable翻頁功能
// ===================================================================

using System.Data;
namespace Pagination
{
public static class DataTablePagination
{

 

     /// <summary>
     /// DataTable翻頁功能
     /// </summary>
     /// <param name="dt">數據源</param>
     /// <param name="PageIndex">當前頁</param>
     /// <param name="PageSize">每頁顯示多少條數據</param>
     /// <returns>返回處理后的數據</returns>
public static DataTable GetDataTablePagination(this DataTable dt, int PageIndex, int PageSize)
{
//如果不是有效參數 返回null
if (dt == null || dt.Rows.Count == 0 || PageSize <= 0 || PageIndex < 0)
{
return null;
}
//如果總數小於分頁數直接返回數據
if (dt.Rows.Count <= PageSize)
{
return dt;
}
int _totalCount = 0;
_totalCount = dt.Rows.Count / PageSize;
if (dt.Rows.Count % PageSize > 0)
{
_totalCount++;
}
PageIndex++;
for (int i = 1; i < PageIndex; i++)
{
dt = RemoveDataTableRows(dt, 0, PageSize);
}
return GetDataTableRows(dt, 0, PageSize);
}
/// <summary>
/// 根據數據表 指定 行數的索引值 刪除指定的行個數
/// </summary>
/// <param name="dt">要操作的數據表</param>
/// <param name="rowIndex">開始刪除的行號(行索引值)</param>
/// <param name="num">刪除行數</param>
/// <returns>返回處理后的數據表</returns>
public static DataTable RemoveDataTableRows(DataTable dt, int rowIndex, int num)
{
if (dt == null || dt.Rows.Count == 0 || rowIndex < 0 || num < 0)
{
return dt;
}
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == rowIndex)
{
for (int j = 0; j < num; j++)
{
dt.Rows.RemoveAt(rowIndex);//.Rows[].Delete();
}
break;
}
}
return dt;
}
/// <summary>
/// 根據數據表 指定 行數的索引值 獲取指定的行個數數據
/// </summary>
/// <param name="dt">要操作的數據表</param>
/// <param name="rowIndex">開始獲取數據的行號(行索引值)</param>
/// <param name="num">獲取的行數</param>
/// <returns>返回處理后的數據表</returns>
public static DataTable GetDataTableRows(DataTable dt, int rowIndex, int num)
{
if (dt == null || dt.Rows.Count == 0 || rowIndex < 0 || num < 0)
{
return dt;
}
DataTable dt1 = new DataTable();
dt1 = dt.Clone();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == rowIndex)
{
       for (int j = 0; j < num; j++)                    

{                        

if (i + j + 1 <= dt.Rows.Count)                        

{                            

dt1.Rows.Add(dt.Rows[rowIndex + j].ItemArray);                        

}                    

}                    

break;

}
}
return dt1;
}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM