我用的是 VsflexGrid8.0 英文帮助 用软件翻译一下  看看大意就能理解吧 事件名 也很直观 
代码控制排序
fg.Select Row As Long, Col As Long, [ RowSel As Long ], [ ColSel As Long ]
fg.Sort = sortsettings选定范围排序

解决方案 »

  1.   

    谢谢ZOUYONG0929 ,排序的问题我弄半天还没弄好,我再试试,但是那个更新后自动跳转顺序的问题怎么弄呢?我希望新增一笔资料后这笔资料在最后,修改一笔资料后其位置不变,不会重新再去排序。
      

  2.   

    对于更新数据,我再详细说明一下:
    我采用的是这样的方法:
    1.Grid绑定的查询语句并没有查询全部字段
    2.如果查询全部字段的话,我可以采用:
       p_adodc.recordset.addnew
       p_adodc.recordset("UserID")=text1.text
       p_adodc.recordset("UserName") =text2.text
       p_adodc.recordset.UpdateBatch
       
       这样新增的资料就会显示在最后。
    3.由于未查询全部字段,故我只能另外写一句插入语句:
       sqlstring="select * from User where 1=2
       set p_ors=sql.execq(sqlstring)
       p_ors.addnew
       p_ors!UserID=text1.text
       p_ors!UserName=text2.text
       p_ors.updatebatch   然后刷新表
       p_adodc.recordset.Requery
       set p_grid.datasours=p_adodc
      
       这样顺序就打乱了,但如果不这样做的话,能怎么样做呢?
      

  3.   

    VsflexGrid在我更新数据后,为什么会自动按绑定SQL语句的排序方式重新排序呢?我现在希望实现这样的功能: 
    1.更新数据后顺序不变 
    2.更新数据后不会再按绑定的查询语句作条件筛选(如一开始我查询的是1号到10号的数据,但当我把其中的8号改为12号后,数据就不见了) 
    3.可点击表头排序 
    4.更新后高亮条依然停留在原来的那一行解决办法
    1:更新数据后,你只要在数据库里UPDATE,然后在VS的相应格子里把修改后的数据替换就行了,
    比如你原来fg.TextMatrix(1, 2) = "123",现在要改成456,你只要执行CNN.EXEC("UPDATE XX SET YY='456' WHERE ...."), 然后fg.TextMatrix(1, 2)="456",无需重新绑定数据源,也完全不存在啥重新排序2:不知所云
    3:点击表头排序,有相应属性
    4:高亮显示,就是SELECT属性加我QQ:909413335详细讨论。我整个程序都是用VS做的,包括数据输入,显示,增加,删除,更新,没有一个TEXT
      

  4.   


    这是重新绑定 set p_grid.datasours=p_adodc 
      

  5.   

      p_adodc.recordset.Requery 
      set p_grid.datasours=p_adodc 这两句  
     重新 查询更新  
     重新 绑定set p_grid.datasours=p_adodc 
     =?  p_grid.DataRefresh 
      这样grid 顺序肯定乱了。
    要达到你那个目的 就别绑定了。用AddNew Item As String, [ Row As Long ]p_grid.AddItem "Sting1" & vbTab & "Sting2" & vbTab & "Sting3",[ Row As Long ]要么就刷新数据再排序
    Private Sub p_grid_AfterDataRefresh()
        
         p_grid.Sort(Col)=sortsettingsend sub
      

  6.   

    VsflexGrid在我更新数据后,为什么会自动按绑定SQL语句的排序方式重新排序呢?
    因为你 VsflexGrid 重新绑定 VsflexGrid.datasource=source
    1.更新数据后顺序不变(VsflexGrid 排序不变?)
    A_Adodc.Recordset.Requery 
    记录集的内容都变了。
    2.更新数据后不会再按绑定的查询语句作条件筛选(如一开始我查询的是1号到10号的数据,但当我把其中的8号改为12号后,数据就不见了) 
    sqlstring="select aa as 编号,bb as 姓名 from datatable where aa between 1 and 10" 
    SqlString 没变
    3.可点击表头排序 
    Explorerbar=5 
    4.更新后高亮条依然停留在原来的那一行 
    记录集刷新了。但如果DataMode=1  而且  ExplorerBar=5,则实现不了排序,而DataMode=0 而且 ExplorerBar=5,则可实现排序,但失去了点击某行得到ADO值的功能 
    要排序 就排序数据源  如 recordset.sort="ASC"Ado 指 数据源 游标吧 cursor
    Private Sub fg_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
              if fg.Mousecol=col and fg.MouseRow=0 then '点击表头
                    recordset.sort="Dsc" '降序
                end if
    End Sub
    看来你最终目的 还是为这 这个 Cursor 
    其实可以换其他办法
    采用 DataMode=0 的办法
    更新时 在数据源内找到 记录 更新