如何控制dxDBGRID的显示行数怎么实现象翻页一样的功能,在线等,马上给分哦

解决方案 »

  1.   

    参考以往:http://topic.csdn.net/t/20030908/17/2236934.html
    http://topic.csdn.net/t/20021204/10/1229316.html
      

  2.   

    你还真是有分的人啊,刚才在你那帖子里都回了,结果你结贴了首先得出记录总条数为m,每页显示行数为n,则得出总页数为pagei:=m div n;
    j:=m mod n;
    if j>0 then
      i:=i+1;
    page:=i;通过下面代码,获取当前页显示内容,当前页用变量k表示
        self.ADOQuery4.Close;
        self.ADOQuery4.Connection:=self.ADOConnection1;
        self.ADOQuery4.SQL.Clear;
        Self.ADOQuery4.SQL.Add('select top n * from czjl where flag>0');
        Self.ADOQuery4.SQL.Add(' and time_qy not in (select top '+inttostr(k-1)*n+' time_qy');
        self.ADOQuery4.SQL.Add(' from czjl where flag>0 order by time_qy desc) order by time_qy desc');
        Self.ADOQuery4.Open;
      

  3.   

    SQL分页的贴子很多的,自己查吧。上下页,跳转的功能都能实现。
      

  4.   

    上面的只是参考代码,要很好的做到翻页功能,还需要增加一些判断第一页记录用下面代码获取  Self.ADOQuery4.Close;
      Self.ADOQuery4.Connection:=self.ADOConnection1;
      Self.ADOQuery4.SQL.Clear;
      Self.ADOQuery4.SQL.Add('select top n * from czjl where flag>0 order by time_qy desc');
      Self.ADOQuery4.Open;
      

  5.   

    简单点的,设置grid显示的行数,然后用  
    Grid.Perform(WM_VSCROLL,SB_PAGEUP,0); 
    Grid.Perform(WM_VSCROLL,SB_PAGEDOWN,0); 
      

  6.   

    正如2楼所说,事先要计算好,如果是Oracle数据库,我之前写的一代码可供参考,虽说是用java写的,但原理一样:       rst = db.openSql("select count(id) from T_POWERAREA");   
            if(rst != null)   
            {              
                rst.next();//游标指向第一行   
                intRowCount=rst.getInt(1);//取得总行数      
            }   
               
            if(intRowCount < 1)   
            {   
                return ERROR;   
            }   
               
           intPageCount = (intRowCount % pageSize == 0) ? (intRowCount / pageSize)   
                    : (intRowCount / pageSize + 1);// 计算出总页数          
      
            if (pageNow < 1) {   
                pageNow = 1;   
            }   
            if (pageNow > intPageCount) {   
                pageNow = intPageCount;   
            }   
               
            intMaxPage = intPageCount;         
            int iPast;   
            iPast = (pageNow - 1) * pageSize;   
               
            String sql = "select * from ( select * from T_POWERAREA where id not in (select id from (select id from T_POWERAREA order by id) WHERE ROWNUM <= "  
                    + iPast   
                    + ""  
                    + "  )"  
                    + " order by id asc)"  
                    + " where rownum <= " + pageSize;   
            rst = db.openSql(sql); 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kampan/archive/2009/04/28/4133185.aspx
      

  7.   

    http://hi.baidu.com/autumnlin/blog/item/9eb4d7cf2a3f2439f9dc61e2.html 
    DBGrid 实现分页,参考一下吧 我印象中cx系列的grid支持分页
      

  8.   

    ..回2楼,呵呵,我比较心急,也的确比较赶,我现在用的是clientdataset,没用到query
      

  9.   

    在哪里设置grid的行数呢????
      

  10.   

    clientdataset,也是支持sql的,你的关键就是控制sql,每次取出一部分
      

  11.   

    还有,TApplicationEvents控件在哪里呢,找半天啊。。找到一个ApplicationEvents,但是没有WmMouseWheelMessage事件啊,
      

  12.   

    数据是保存在内存中的,要如何写sql呢,求教ing
      

  13.   

    就是希望程序 自动实现 在dbgrid里手工按pagedown/pageup的效果 ?
    发 翻页滚动 消息不行吗?
      

  14.   

    select top '+inttostr(k-1)*n+' time_qy' from czjl where flag>0 order by time_qy desc
    用什么控件不是关键,只要支持sql就行,注意2楼的方法中的这些部分,也就是说,你所谓的分页,就是你根据计算出来什么时候该取哪些记录。
      

  15.   


    卡庙兄,你这里的pagesize是怎么确定下来的?
      

  16.   

    关键是在哪里设置grid显示的行数呢?????说的详细些?