在分页后,有类似这样的结构
序号    姓名    年龄
5       xx       23
1       xy       21
3       uu       20
每页记录3条。int pageSize=3;
需要点击列名第一次升序,第二次降序。我采用重新从数据库中按某种顺序调数据来实现:
if(mycurrentPage==0){
sql="select top "+pageSize+" * from TABLE2 order by  "+orderby+" "+ascdesc+"";
}else{
sql="select top "+pageSize+" * from TABLE2 where id not in (select top "+((currentPage-1)*pageSize)+" id from TABLE2 order by  "+orderby+" "+ascdesc+")order by  "+orderby+" "+ascdesc+"";
}
然后改变ascdesc的数值,实现顺序转换,可是我再次点击列名时却不是原来在第一页中的那些记录,而是按照某中顺序对表中全部数据排序后显示出来的结果。该怎么改才能对原来页中的数据进行排序呢?

解决方案 »

  1.   

    你要把取值范围限定在SQL语句的后面,如:where rownum<4 and rownum>0这样你每次取出的都是你当前页面的内容,然后对这些数据进行新的排序,我就是这样做的
      

  2.   

    rownum 是数据库自带的row编码
      

  3.   

    where rownum<4 and rownum>0这样写是非法的,取不到正确的数据,rownum只能用小于等于,不能大于等.
      

  4.   

    select rownum id1 from tablename where rownum<=4 and  id1>0 用个别名就可以了
      

  5.   

    把当页数据在JSP页面中用数组保存,排序和显示用JAVASCRIPT做
      

  6.   

    http://community.csdn.net/Expert/topic/4782/4782752.xml?temp=.3081018
    查询后显示的数据,随意排序,但是鼠标点击任一字段名后,自行按字母排序,这个需求怎么实现啊???????????????? 
    获得数据后在javascript中用数组保存,初始化该数组data[][]
    写一个排序的函数对该数组按某个字段进行排序 function sortby( field ){...//对data进行排序}
    写一个在页面显示该数组的函数. 
    function display()
    {  
       ....
       document.forms[formid].elementid.innerHtml=" ....";
       ....
    }function execute()
    {
        sortby( XXX );
        display();
    }<form id="formid" onload="execute()">
    <table>
    <tr><td onclick="sortby(a)"></td>
    <td onclick="sortby(a)"></td>
    <td onclick="sortby(a)"></td>
    </tr></table>
    <table id="elementid"></table>
    </form>
      

  7.   

    ldg_2(绿豆糕) ( ) 信誉:100    Blog  2006-8-30 14:53:51  得分: 0  
     
     
       
    不能再次从数据库中查找,因为此时数据库有可能已经更新了数据或者增删了。取回的数据有可能不是原来显示的数据,既然已经分页说明你已经取回了一段数据,肯定是保存在一个容器中或者对象中,现在你直接对容器中的数据进行操作就可,由于是在内存中,速度肯定也快。  
     
    ....................................................................................
    我是将取出来的东西放在一个字符串sql中的,可是怎么对存在sql中的进行排序呢???具体点可以么?
      

  8.   

    china2001ok(开心拽拽) ( ) 信誉:100    Blog  2006-8-30 10:57:08  得分: 0  
     
     
       
    你要把取值范围限定在SQL语句的后面,如:where rownum<4 and rownum>0这样你每次取出的都是你当前页面的内容,然后对这些数据进行新的排序,我就是这样做的  
     
    .................................................................................
    我用的是sql="select top "+pageSize+" * from TABLE2 where id not in (select top "+((currentPage-1)*pageSize)+" id from TABLE2 order by  "+orderby+" "+ascdesc+")order by  "+orderby+" "+ascdesc+"";
    是把取数值范围限制在sql语句后面的啊!!