DataTable分页
private readonly static double showPageRows = 10.0;//单页显示10条
/// <summary>
/// 绑定dt到gv
/// </summary>
/// <param name="gv"></param>
/// <param name="dt"></param>
private void BindGridview(GridView gv, DataTable dt)
{
gv.Columns.Clear();
gv.DataSource = dt;
BoundField bf;
foreach (DataColumn col in dt.Columns)
{
bf = new BoundField();
bf.HeaderText = GetLang(col.ColumnName);
bf.DataField = col.ColumnName;
gv.Columns.Add(bf);
}
gv.DataBind();
}
private void Paging(string pagingBtn)
{
int index = 0;
int pageIndex = Convert.ToInt32(ddlPageIndex.SelectedValue);
int pageCount = Convert.ToInt32(Math.Ceiling(count / showPageRows));//count是数据源的总行数
if (pagingBtn == "first")
index = 0;
else if (pagingBtn == "pre")
{
if (pageIndex > 0)
index = pageIndex - 1;
else
index = 0;
}
else if (pagingBtn == "next")
{
if (pageIndex < pageCount - 1)
index = pageIndex + 1;
else
index = pageCount - 1;
}
else if (pagingBtn == "last")
index = pageCount - 1;
BindPaging(index);
ddlPageIndex.SelectedValue = index.ToString();
}
/// <summary>
/// 绑定分页下拉框
/// </summary>
/// <param name="PageCount">总页数</param>
private void BindDdlPage(int PageCount)
{
ddlPageIndex.Items.Clear();
for (int i = 0; i < PageCount; i++)
{
ddlPageIndex.Items.Add(new ListItem((i + 1).ToString(), i.ToString()));
}
lblPages.Text = "页,共" + PageCount.ToString() + "页";
}
/// <summary>
/// 获取当前页显示的记录集
/// </summary>
/// <param name="dt">总记录集</param>
/// <param name="pageIndex">显示第几页,从0开始</param>
/// <returns>返回在当前页显示的记录集</returns>
private DataTable getDtPage(DataTable dt, int pageIndex)
{
DataTable dtPage = dt.Clone();
int rowCount = dt.Rows.Count; //记录总数
int pageCount = Convert.ToInt32(Math.Ceiling(rowCount / showPageRows)); //总页数
int showNum = Convert.ToInt32(showPageRows); //当前页显示的记录条数
//当前页为最后一页时显示的记录条数
if (pageIndex == pageCount - 1)
{
showNum = rowCount - (pageCount - 1) * (Convert.ToInt32(showPageRows));
}
for (int i = 0; i < showNum; i++)
{
dtPage.ImportRow(dt.Rows[pageIndex * (Convert.ToInt32(showPageRows)) + i]);
}
return dtPage;
}
/// <summary>
/// dt添加汇总行
/// </summary>
/// <param name="dt"></param>
private void AddSumRow(DataTable dt)
{
double sum = Convert.ToDouble(dt.Compute("SUM(number)", ""));
DataRow drSum = dt.NewRow();
drSum.ItemArray = new string[] { "汇总行", null, null, null, null, null, null, sum.ToString() };
dt.Rows.InsertAt(drSum, 0);
}
附:
<table width="100%" style="background-color: #218DE0;position: absolute;"><tr><td>
<asp:Label ID="lblPageIndex" runat="server" Text="第" />
<asp:DropDownList ID="ddlPageIndex" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlPageIndex_SelectedIndexChanged" />
<asp:Label ID="lblPages" runat="server" Text="页,共0页" />
<asp:LinkButton ID="lnkFirst" runat="server" Text="首页" CommandName="first" OnCommand="paging_Click" />
<asp:LinkButton ID="lnkPre" runat="server" Text="上一页" CommandName="pre" OnCommand="paging_Click" />
<asp:LinkButton ID="lnkNext" runat="server" Text="下一页" CommandName="next" OnCommand="paging_Click" />
<asp:LinkButton ID="lnkLast" runat="server" Text="末页" CommandName="last" OnCommand="paging_Click" />
</td></tr></table>