搜索数据库,以前做搜索,总是把需要的参数传到search.aspx处理,并在这个页面绑定repeater控件, 
但是调试的时候总是发现,即使bind()事件写在!ispostback()里面,翻页的时候还是会执行。  
如果数据量大的话,翻页是很痛苦的事情。
于是,我想在搜索对话框页面就处理结果,然后把table给session到vsearch.asp中去分去,但是时间长了会丢失结果。
想请教大家是如何做的。

解决方案 »

  1.   

    !ispostback()里面,翻页的时候还是会执行。  
    =========不会的.
      

  2.   

    无论 你在 那个 页面 来 搜索 显示 页面 对于 新的 一页的 数据  肯定都是 要重新加载数据的难道 你要把 几十 百万 甚至千万 的数据 放个dataset里面 缓存起 不成...最好的分页 是 使用存储过程.可以看看.http://blog.csdn.net/hertcloud/category/281167.aspx
      

  3.   

    存储过程,不考虑了,数据库在远程服务器上,改起来有点麻烦,现有代码
    private void Page_Load(object sender, System.EventArgs e)
    {
        if(!this.IsPostBack)
        {
    type=Request["type"];
    keyword=System.Web.HttpUtility.UrlDecode(Request["keyword"]);
    bind(); 
        }
    }
    private void bind()
    {
    ......
    这里用查询语句生成了dataset,用pageddatasource分页,并将结果帮到repeater。
    }跟踪过了,确实是翻页的时候确实是又bind()一次了,只不过pageddatasource的CurrentPageIndex变化了。
      

  4.   

    session占服务器资源,自然是行不通的,但是,传过去以后,分页的时候只需要分页内存中的table,不用再搜索数据库,速度上应该会快很多,但是,资源,资源啊。怎么办~
      

  5.   

    既然怕session占服务器资源那你可以保存在ViewState里面,
    当然用的人多你也可以保存到Cache里面
      

  6.   

    pageddatasource小数据量比较方便,昨晚用它分页一个100w数据集,结果超时了。
      

  7.   

    数据库在远程服务器上,改起来有点麻烦?连接一下数据库有什么麻烦的,然后加个分页存储过程就好了还有,你说点分页的时候还要运行bind
    那是因为你在点分页的时候主动调用了bind方法,绝不是因为if(!this.IsPostBack)判断通过才bind的