苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 1289|回复: 1

本地筛选的要怎么批量删除呀

[复制链接]

7

主题

9

帖子

75

积分

注册会员

Rank: 2

积分
75
发表于 2023-4-6 15:17:31 | 显示全部楼层 |阅读模式
本帖最后由 微信用户_62 于 2023-4-6 15:26 编辑

本地筛选后的可见的row要怎么批量删除,而不是表里所有的数据都全部删除
回复

使用道具 举报

22

主题

296

帖子

1876

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1876
QQ
发表于 2023-4-6 15:36:24 | 显示全部楼层
  1. '先定义变量获取表
  2. Dim tbl As SmGrid = Proj.CurrentSmGrid
  3. '如果不让删除,则直接退出
  4. If tbl.AllowDelete AndAlso tbl.Selection.IsValid Then
  5.     tbl.StopRedraw()
  6.     '获取当前表的当前选择区域
  7.     Dim rng As CellRange = tbl.Selection
  8.    
  9.     Try
  10.         '由于删除动作会影响tb.Selection.r2这样的值,所以必须先在循环之前将这个值赋值到变量中
  11.         Dim intLast As Integer = tbl.Selection.r2
  12.         Dim intFirst As Integer = tbl.Selection.r1
  13.         '遍历选择区域的每一行,因为删除操作会影响DataRows集合,为了不让删除影响序列的指定关系,我们从最后一行往前面反过来遍历
  14.         For i As Integer = intLast To intFirst
  15.             '如果指定行有绑定数据并且当前行没有被锁定,则继续删除操作
  16.             If tbl.Rows(i).GetRowData() IsNot Nothing AndAlso Not tbl.Rows(i).GetRowData().Locked Then
  17.                 '将指定行删除
  18.                 tbl.Rows(i).GetRowData().Delete()
  19.             End If
  20.         Next
  21.     Catch ex As Exception
  22.         UnhandledExceptionManager.ShowAndSaveLog(ex)
  23.     Finally
  24.         tbl.ResumeRedraw()
  25.     End Try
  26. End If
复制代码


删除行一定要注意不要在删除的时候修改集 合。可以通过序号倒序引用的方式来删除。
参考第7小点
http://www.sanmugrid.com/help/in ... %94%A8%E8%A1%8C.htm

'先定义变量获取表
Dim tbl As SmGrid = Proj.CurrentSmGrid
'可以根据筛选条件批量删除数据
tbl.DataTableHelp.DeleteFor("ColName like '%江苏%'")

删除的要点是一定不要通过遍历集 合来删除,因为删除其中一个就会引起集 合的变化,遍历就会变得薛定谔。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2024-7-7 22:40 , Processed in 0.067894 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表