我做个查询操作用Repeater帮定数据,为了翻页我在Page_Load中加了以下代码
   if (Request.QueryString["Page"] != null)
{
bind(); }


}
但是发生的错误是,我在重新点"查询"按钮后,由于页面传递过来的["Page"}参数存在,所以,执行查询操作后,直接跳转到页面传递过来的参数["Page"]中的那一页,而不是第一页,这样不符合要求的.
问各位大虾怎么改才既可以实现翻页,重新查询时可以从记录第一页开始呢,还有一个问题是,我点"刷新"后,也是同样的问题
我的代码如下
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
        

if (Request.QueryString["Page"] != null)
{

bind(); }
else
{

} }
               public void bind()
{

strQuery = "select DepartInfo.DepartName, UsersName, PartNo, City_M, Coun_M, WZ_M, Long_M, IP_M, Sum_M from DepartInfo,UserInfo,PartSum_H where UserInfo.DH=PartSum_H.PartNo and DepartInfo.DepartID=PartSum_H.DepartID and PartSum_H.DepartID = '"+int.Parse(dpDptName.SelectedValue.ToString())+"'"; RepeaterBind(); }
private void btnQuery_Click(object sender, System.EventArgs e)
{bind();
} public void RepeaterBind()
{
                   帮定数据

}请各位帮忙看看 谢谢先

解决方案 »

  1.   

    if (Request.QueryString["Page"] != null)
    {

    bind(); }
    else
    {

    }
    放到 if(!Page.IsPostBack)的外面,每次都判断一次
      

  2.   

    to 楼上的
    还是不行,同样一个问题,Request.QueryString["Page"] 一直存在,所以进行新的查询后,还是会从传过来的页面参数的那页开始显示
      

  3.   

    to powerllr
    有没有其他方法呢to zhhxx
    我也是用按钮的 这样帮定数据时 设置翻页时用Request.QueryString就会出现我描述的问题的
      

  4.   

    不用把什么代碼都放在 Page_Load()中,分頁的當前頁數最好不要用 Request 參數。以上這些 ASP 的寫法,因為 ASP 沒有按鈕事件把查詢代碼放入 Btn_Query_Click(object sender, System.EventArgs e) 中,使用 ViewState 存放當前頁面數
        ViewState["CurrentPageIndex"] = 0;
        this.bind();
    分頁代碼寫在分頁按鈕事件中,如 Btn_NextPage_Click(object sender, System.EventArgs e)
        ViewState["CurrentPageIndex"] = ((int)ViewState["CurrentPageIndex"])+1;
        this.bind();
      

  5.   

    to cityhunter
    我的代码是这样的
    不知道如何改成你说的那种
     public void RepeaterBind()
    {
    // Session["Query"]="1";
    hr.conn.Open();
    SqlDataAdapter myCommand1=new SqlDataAdapter(strQuery,hr.conn); 

                
    DataSet ds1=new DataSet();
    myCommand1.Fill(ds1,"result");

    PagedDataSource objPds = new PagedDataSource();
    objPds.DataSource = ds1.Tables["result"].DefaultView;
                
    objPds.AllowPaging = true;
    objPds.PageSize = 25;
     
     
    int CurPage;
    if (Request.QueryString["Page"]!=null)
    CurPage=Convert.ToInt32(Request.QueryString["Page"]);
    else
    CurPage=1; objPds.CurrentPageIndex = CurPage-1;
    lblCurrentPage.Text = "总记录数:<font color=red>"+ objPds.DataSourceCount +"</font>条,每页:<font color=red>"+objPds.PageSize +"</font>条记录,当前页:第<font color=red>" + CurPage.ToString() +"/"+ objPds.PageCount +"</font>页 " ;
    if (!objPds.IsFirstPage)
    lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1);
    else
    lnkPrev.Text="<font color=666666>上一页</font>";
    if (!objPds.IsLastPage)
    lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1);
    else
    lnkNext.Text="<font color=666666>下一页</font>";
    if (!objPds.IsFirstPage)
    lnkTop.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=1";

    else 
    lnkTop.Text="<font color=666666>首页</font>";
    if (!objPds.IsLastPage)
    lnkLast.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + objPds.PageCount;
    else
    lnkLast.Text="<font color=666666>尾页</font>";
                 
                ViewState["CurrentPage"]=0;
    MyRepeater.DataSource =objPds;

    MyRepeater.DataBind ();
    hr.conn.Close();
    }
      

  6.   

    把 lnkPrev、lnkNext、lnkTop、lnkLast 由HyperLink 控件變成 LinkButton 控件
    雙擊它們就會出現
    private void lnkNext_Click(object sender, System.EventArgs e)
    {
        ViewState["CurrentPageIndex"] = ((int)ViewState["CurrentPageIndex"])+1;
        this.RepeaterBind();
    }然后在 public void RepeaterBind() 改一下代碼
        objPds.CurrentPageIndex =(int)ViewState["CurrentPageIndex"];
        if (objPds.IsLastPage)
        {
            lnkPrev.Enabled=lnkTop.Enabled = false;//把“上一頁”“首頁”變灰
        }//注意加上 {} ,增強可讀性
        if (objPds.IsFirstPage)
        {
            lnkNext.Enabled=lnkLast.Enabled = false;//把“下一頁”“尾頁”變灰
        }
      

  7.   

    在 public void RepeaterBind()開始要加上
    lnkPrev.Enabled=lnkTop.Enabled=lnkNext.Enabled=lnkLast.Enabled =true;
      

  8.   

    再问cityhunter
    我用的是Repeater控件帮盯数据,它不象datagrid有currentpage属性,所以我不知道翻页时该怎么写呢
      

  9.   

    做成按钮,在按钮事件里面写查询代码,一般都没问题!不要在Page.IsPostBack中考虑问题!
      

  10.   

    翻页中通用的变量用ViewState来保存!
      

  11.   

    objPds.CurrentPageIndex =(int)ViewState["CurrentPageIndex"];看到此句沒有,你要做的就是改變或者是初始化 ViewState["CurrentPageIndex"];
    如果你想在 Page_Load 就要綁定,那么你可這么寫
    if(!IsPostBack)
    {
        this.Btn_Query_Click(null,null);
    }
      

  12.   

    PagedDataSource objPds = new PagedDataSource();
    objPds.DataSource = ds1.Tables["result"].DefaultView;
    objPds.AllowPaging = true;
    objPds.PageSize = 25;
    objPds.CurrentPageIndex =(int)ViewState["CurrentPageIndex"];