对DataTable进行分页

在某些情况下可能需要必须对datatable进行分页如下:

C#:

/**/ /// <summary>
/// 对DataTable进行分页,起始页为1
/// </summary>
/// <param name="dt"></param>
/// <param name="PageIndex"></param>
/// <param name="PageSize"></param>
/// <returns></returns>

public static 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;
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;
}

VB.net:

Public Shared Function GetPagedTable(ByVal dt As DataTable,ByVal PageIndex As Integer,ByVal PageSize As Integer) As DataTable If PageIndex = 0 Then Return dt End If Dim newdt As DataTable = dt.copy() newdt.Clear() Dim rowbegin As Integer = (PageIndex - 1) * PageSize Dim rowend As Integer = PageIndex * PageSize If rowbegin >= dt.Rows.Count Then Return newdt End If If rowend > dt.Rows.Count Then rowend = dt.Rows.Count End If For i As Integer = rowbegin To rowend - 1 Dim newdr As DaTarow = newdt.NewRow() Dim dr As DaTarow = dt.Rows(i) For Each column As DataColumn In dt.Columns newdr(column.ColumnName) = dr(column.ColumnName) Next newdt.Rows.Add(newdr) Next Return newdt End Function

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...