页面加载的时候
 本身会查询出数据 
然后根据条件查询的时候 
又查询出数据了 
再然后 我点分页的时候 
其实分页的是第一次查询出来的 而不是第二次查询出来的结果集
这个要怎么办

解决方案 »

  1.   


    namespace WebIPCon.Admin
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class Show400 : System.Web.UI.Page
    {
    protected System.Web.UI.HtmlControls.HtmlGenericControl addlist;
    protected System.Web.UI.HtmlControls.HtmlGenericControl Showtitl; private int _pageSize;//每页显示的数据条数
    private int _pageCurrent;//当前显示的页
    private int _dataCount;
    protected System.Web.UI.HtmlControls.HtmlInputButton Button1;
    protected System.Web.UI.HtmlControls.HtmlInputText Text1;
    protected System.Web.UI.WebControls.TextBox TextBox1;
    protected System.Web.UI.WebControls.Button Button2;
    protected System.Web.UI.HtmlControls.HtmlInputText few;//一共有点数据条数
    private int _pageCount;//一共有多少页

    private void Page_Load(object sender, System.EventArgs e)
    {
    getpage(); if (Session["show400Page"] != null)
    {
    _pageCurrent = int.Parse(Session["show400Page"].ToString());

    else
    {
    _pageCurrent = 1;
    } if (Request["page"] != null)
    {
    string ab  = Request["page"].ToString(); if (ab == "first")
    {
    setView(1);
    } if (ab == "last")
    {
    setView(_pageCount);
    } if (ab == "prio") 
    {
    if(_pageCurrent > 1)
    {setView(_pageCurrent - 1);}
    else
    {setView(1);}
    } if (ab == "next") 
    {
    if (_pageCurrent < _pageCount)
    {setView(_pageCurrent + 1);}
    else
    {setView(_pageCount);}

    }
    if(ab=="num")
    {
    if (Request["pnum"] != null)
    {
    string pnum=Request["pnum"].ToString();
    setView(Convert.ToInt32(pnum));

    }
    } } 
    else
    {
    setView(_pageCurrent);
    }
    }
    private void getpage()
    {

    string sql = "select count(*) as C from s_occupy where flag = 0 ";
    DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.DBConnectionString, CommandType.Text, sql);
    _dataCount = int.Parse(ds.Tables[0].Rows[0][0].ToString());
    _pageSize = 36; this.Response.Write(_dataCount);
    _pageCount = _dataCount / _pageSize;
    if (_dataCount % _pageSize != 0)
    {
    _pageCount++;
    }

    }
       private void setView(int pc)
    {
    addlist.InnerHtml="";
    string str=""; if(this.Text1.Value.Trim()=="")
    {
    str="";

    }
    else
    {  
    str= " and  occupiedNum LIKE  '%"+ this.Text1.Value.Trim() +"%' ";
    }
    Session["show400Page"] = pc;
    _pageCurrent = pc;
    string sql = string.Format(@"select left(occupiedNum,3) + 'XXX' + right(occupiedNum,4) as show,occupiedNum from 
    (select top {0} occupiedNum from (select top {1} occupiedNum from s_occupy where flag = 0 {2} order by occupiednum desc) a order by occupiednum ) b
    order by occupiednum desc",_pageSize,_pageCurrent * _pageSize,str);
    DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.DBConnectionString, CommandType.Text, sql); for (int i = 0;i <= ds.Tables[0].Rows.Count - 1;i++)
    {
    addlist.InnerHtml += string.Format("<li><a href=\"Detail.aspx?num={1}\">{0}</a></li>"
    ,ds.Tables[0].Rows[i][0].ToString(),
    ds.Tables[0].Rows[i][1].ToString());

    }

    Showtitl.InnerHtml = string.Format("第{0}页 共{1}页 号码总数:{2}",_pageCurrent,_pageCount,_dataCount);
    } private void Button2_Click(object sender, System.EventArgs e)
    {

    }
    }
    }
      

  2.   

    To:ZKM_ZHANG 
    我也是这样想的啊
    但是点下一页的时候是重新刷新页面
    所以老是取不到textbox的值啊
      

  3.   

    改你第一次的查询语句吧 带上查询条件 如果没条件为空的时候就查询所有 
    这样等你输入条件查询的时候就可以用同一个sql了 然后把查询的条件保存 用viewstate  这样点分页下一页的时候实际是重新查询的
      

  4.   

    private void getpage() 这个方法的问题,因为你Load里做的分页方式,所以没次加载都是查询的这个方法,建议你把这个方法改一下,改成:
    private void getpage(string sql)通过传入sql的方式来灵活查询,然后在Load判断你的查询是否有值,进行sql语句组装
      

  5.   

    如果点下一页没值的话,你可以使用session方式来保存数据就可以了
      

  6.   

    在Page_Load中把点击下一页不需要刷新的代码放在
    if(!Page.IsPostBack)
    {
        //代码
    }
      

  7.   

    接上面想这些业务代码你最好不要直接放在Page_Load中,直接把他们写在自定义方法中然后在Page_Load中调用
      

  8.   

    把查询条件保存下来(比如放到session中)
    在没有查询前,该session是null
    查询后,把查询条件放到session中(可以是最原始的输入内容,也可以是根据输入内容组合后的查询条件)
    然后,在点分页后,读这个session(判断是否是有条件分页),然后把它转给存储过程或直接组合到SQL语句中获取下页内容。
      

  9.   

    设置一public static int curpage;静态的值来保存你当前的页码,下一次直接用就好