请问如何获取在VSflexGrid中选中的多行的行号

daqin 2005-08-24 08:49:03
VSflexGrid是不是只支持选中单行,选中多行,如何知道这些行的行号,我想删除选中的这些行,请问如何解决?
...全文
343 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whachun 2005-08-26
  • 打赏
  • 举报
回复
从最后一行开始删除就不会出现行号变化了
whachun 2005-08-26
  • 打赏
  • 举报
回复
for i=vsflexgrid.selectedrows-1 to 0 Step-1
vsflexgrid.removeitem vsflexgrid.selectedrow(i)
next
haohaohappy 2005-08-26
  • 打赏
  • 举报
回复
来个例子。你稍微改一下就能用。
Dim Row As Long
Dim tmpI As Long
Dim MaxRow As Long
Dim tmpID As String
MaxRow = fg.SelectedRows
If fg.Row > 0 And MaxRow > 0 Then
If MsgBox("是否永久删除这些记录?" & vbCrLf & "注意:这些记录被删除后将不可恢复!", vbQuestion + vbYesNo + vbDefaultButton2, "提示") = vbYes Then
For tmpI = 1 To MaxRow
Row = fg.SelectedRow(0)
tmpID = fg.TextMatrix(Row, fg.ColIndex("ID"))
If tmpID <> "" Then
fg.RemoveItem Row
cn.Execute "delete from tb where id=" & tmpid
End If
Next tmpI
End If
End If
vbman2003 2005-08-26
  • 打赏
  • 举报
回复
如果你只是删除vsflexgrid中的数据如此即可:

Dim i
With vfg
For i = IIf(.Row < .RowSel, .Row, .RowSel) To _
IIf(.Row > .RowSel, .Row, .RowSel)
vfg.RemoveItem i
Next i
End With


fishmans(金脚指) 的代码有问题吧?



daqin 2005-08-25
  • 打赏
  • 举报
回复
2楼的原理是对的,感谢回复,我试过了,如果同时定位和删除会出现异常,因为删除一行后,行的序号将发生变化,我用了一个笨办法,先不删,用一数组记录选中的行的关键字段,然后根据关键字段批量删除,清问有没有更好的办法,多谢
TrueYi 2005-08-25
  • 打赏
  • 举报
回复
支持2楼的方法.
fishmans 2005-08-24
  • 打赏
  • 举报
回复
for i=0 to vsflexgrid.selectedrows-1
vsflexgrid.removeitem vsflexgrid.selectedrow(i)
next
vbman2003 2005-08-24
  • 打赏
  • 举报
回复
Dim i,j
With vfg
For i = IIf(.Row < .RowSel, .Row, .RowSel) To IIf(.Row > .RowSel, .Row, .RowSel)
j = .TextMatrix(i, 1)
cn.Execute "delete from tb where id='" & j & "'"
Next i
End With

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧