日期:2014-05-17  浏览次数:20572 次

ASP.NET gridview控件自动分页
请高手指教下gridview控件的自动分页功能:
我的gridview控件的数据来源有一下集中方式得来:
1、直接无条件查询得来;
2、按照查询条件不同,查询出来的结果也不同。
我知道gridview控件需要在PageIndexChanging事件里面重新绑定数据源,单我的数据源都有多种来源,请问如何绑定?
如果这样绑定不行,请教下用SQL来实现分页的源码。谢谢!!!

------解决方案--------------------
首先封装一个绑定的方法,不管有没有查询条件,在你封装的方法里面处理,对于gridview就是直接跟这个方法关联,那么在gridview的翻页事件里,直接重新绑定该方法就行了。
------解决方案--------------------
以前用过的一个 建议使用PagedDataSource数据源
#region 带分页的数据源
/// <summary>
/// 带分页的数据源
/// </summary>
private void BindDataList()
{
PagedDataSource pds = new PagedDataSource();
pds.DataSource = BookManager.GetBooks();
pds.AllowPaging = true;
pds.PageSize = 5;
pds.CurrentPageIndex = Pager;
PageCount = pdsBooks.PageCount - 1;
lbl_currentPage.Text = "第" + (pdsBooks.CurrentPageIndex + 1).ToString() + "页,共"
+ pdsBooks.PageCount.ToString() + "页";
SetEnable(pdsBooks);
dl_showBooks.DataSource = pdsBooks;
dl_showBooks.DataBind();
}
#endregion
#region 分页

/// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lb_first_Click(object sender, EventArgs e)
{
Pager = 0;
BindDataList();
}

/// <summary>
/// 上一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lb_prev_Click(object sender, EventArgs e)
{
if (Pager > 0)
{
Pager--;
BindDataList();
}
}

/// <summary>
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lb_next_Click(object sender, EventArgs e)
{
if (Pager < PageCount - 1)
{
Pager++;
BindDataList();
}
}

/// <summary>
/// 尾页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lb_last_Click(object sender, EventArgs e)
{
Pager = PageCount;
BindDataList();
}
#endregion