我用的是 VsflexGrid8.0 英文帮助 用软件翻译一下 看看大意就能理解吧 事件名 也很直观
代码控制排序
fg.Select Row As Long, Col As Long, [ RowSel As Long ], [ ColSel As Long ]
fg.Sort = sortsettings选定范围排序
代码控制排序
fg.Select Row As Long, Col As Long, [ RowSel As Long ], [ ColSel As Long ]
fg.Sort = sortsettings选定范围排序
我采用的是这样的方法:
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
这样顺序就打乱了,但如果不这样做的话,能怎么样做呢?
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
这是重新绑定 set p_grid.datasours=p_adodc
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
因为你 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 的办法
更新时 在数据源内找到 记录 更新