读书人

asp.net 查询后的结果进行翻页,该怎么

发布时间: 2012-02-28 13:06:35 作者: rapoo

asp.net 查询后的结果进行翻页
做制网页的时候,经常做,将查询后多条记录进行分页,例如一些搜索引擎网站.我想实现这种功能的方法有很多.
在刚做网页的时候,我的思路是这样的:将查询后的结果做为数据集绑定在一个DataGrid里,然后启用DataGrid里的自动分页.
可是实际上是行不通的,因为在点击"下一页"的时候,整个页面都刷新了,只执行Page_Load()事件,从而致使DataGrid里的数据为空,也就显示不出第二页的数据了.
最后,我换了一种方法,将DataGrid放在一个UpdatePanel,这样以来,在点击"下一页"的时候,就不会出现整个页面刷新了.虽然最终是实现了理想的效果,但是还是想知道有更好的办法!
查询的结果进行分页,我相信大家都做过的,在这里我想请教一下各位网页,你在做这样的功能的时候,思路是怎么样的呢?
谢谢....
若有拍案叫绝的方法,我绝对加分.


[解决办法]
分页...搜索一下到处都能找得到代码
[解决办法]
分页代码很多的,一搜一大堆
[解决办法]
方法太多了啊
我一般用存储过程
[解决办法]
用微软提供的aspnetpager那个控件比较简单,试试
[解决办法]
aspnetpager很好用.特别方便.你找下试试.
[解决办法]
第一种方式行不通的原因是不是你的程序有问题?
典型的写法应该是

//把搜索结果绑定到datagrid
BindDataGrid()
{
dataGrid.DataSource = GetSearchResult();
dataGrid.DataBind();
}

//点击搜索按钮时
SearchButton_Click()
{
BindDataGrid();
}

//点击翻页时
DataGrid_PageIndexChange()
{
DataGrid.CurrentPageIndex = e.NewPageIndex;
BindDataGrid();
}

[解决办法]
aspnetpager?
[解决办法]
你有没有对datagrid设置允许分页?
[解决办法]
第一种应该行得通的,我这样做都没问题。
[解决办法]
http://www.webdiyer.com/ 最好的分页控件有使用说明和视频教程以及源代码

例如:
页面代码========================

<webdiyer:AspNetPager ID="AspNetPager1" runat="server" Width="98%"
AlwaysShow="True" CustomInfoHTML="" CustomInfoTextAlign="Left"
FirstPageText="首页" HorizontalAlign="Center" LastPageText="尾页"
NextPageText="下一页" NumericButtonCount="6" PageIndexBoxType="TextBox"
PrevPageText="前一页" ShowCustomInfoSection="Left" ShowPageIndexBox="Always"
UrlPaging="True" PageSize="10" onpagechanging="AspNetPager1_PageChanging">
</webdiyer:AspNetPager>

后台AspNetPager1_PageChanging事件代码

if (!this.IsPostBack)
{
this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
this.AspNetPager1.RecordCount = BLL.Userinfo.GetNum();
this.AspNetPager1.CustomInfoHTML = "总共" + this.AspNetPager1.RecordCount.ToString() + "条数据,共" + this.AspNetPager1.PageCount.ToString() + "页/目前第" + this.AspNetPager1.CurrentPageIndex.ToString() + "页";}
[解决办法]
DataGrid可以使用它默认的分页功能
也可以 自定义分页
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class APage : System.Web.UI.UserControl
{
PagedDataSource objPage;
public int CurPage;//定义变量来保存当前页索引
public static int TotalPage;//定义变量来保存总页数


public int Tnum;//总条数;
public int EachPage;//每页总条数
public string Mpage;
protected void Page_Load(object sender, EventArgs e)
{
}
public void PicInitial(string PathStr)
{
this.linkFirst.Text = "<img src='" + PathStr + "/0sy.gif' style='border:0px;'/>";
this.linkPre.Text = "<img src='" + PathStr + "/0ssy.gif' style='border:0px;'/>";
this.linkNext.Text = "<img src='" + PathStr + "/0xy.gif' style='border:0px;'/>";
this.linkLast.Text = "<img src='" + PathStr + "/0wy.gif' style='border:0px;'/>";
this.lbtnGoPage.Text = "<img src='" + PathStr + "/0zd.gif' style='border:0px;'/>";
}
public void GetPage(string PageName)
{
Mpage = PageName;
}
public void lbtnGoPage_Click(object sender, EventArgs e)
{
if (this.tbPageNum.Text == "")
{
InPutInfo.Text = "请输入页号";
return;
}
if (!IsNumeric(this.tbPageNum.Text))
{
InPutInfo.Text = "输入页码不在总页数范围内或输入的不是数字";
return;
}
int pageIndex = Int32.Parse(this.tbPageNum.Text);
if (pageIndex <= objPage.PageCount && pageIndex > 0)
{
Response.Redirect(Mpage+"?Page=" + pageIndex);
}
else
{
InPutInfo.Text = "输入页码不在总页数范围内或输入的不是数字";
return;
}
}
public bool IsNumeric(string num)
{
bool flag = true;
try
{
int.Parse(num);
}
catch (Exception)
{
flag = false;
}
return flag;
}
public PagedDataSource ArrangePage(DataTable Ptable)
{
objPage = new PagedDataSource();
objPage.DataSource =Ptable.DefaultView;
objPage.AllowPaging = true;
objPage.PageSize = 15;
int curPage;
TotalPage = objPage.PageCount;
EachPage = objPage.Count;
Tnum = objPage.DataSourceCount;

lblCurPage.Text = "第 " + CurPage.ToString() + " / " + TotalPage.ToString() + " 页";
lblTnum.Text = "共: " + TotalPage + " 条记录";
if (Request.QueryString["Page"] != null)
{
curPage = Convert.ToInt32(Request.QueryString["Page"]);
curPage = Math.Min(curPage, objPage.PageCount);
curPage = Math.Max(curPage, 1);
}
else
curPage = 1;
objPage.CurrentPageIndex = curPage - 1;
this.lblCurPage.Text = curPage.ToString();
this.lblTnum.Text = objPage.PageCount.ToString();
if (objPage.CurrentPageIndex != 0)
linkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(1);
if (objPage.CurrentPageIndex != TotalPage - 1)
linkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(TotalPage);
if (!objPage.IsFirstPage)
{
linkPre.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(curPage - 1);
}
if (!objPage.IsLastPage)
{
linkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(curPage + 1);
}
linkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1";
linkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + objPage.PageCount.ToString();
return objPage ;
}
}

读书人网 >asp.net

热点推荐