Foxtable(狐表)用户栏目专家坐堂 → [求助]多选时StartEdit只对选择区的第一行生效怎么办?


  共有1968人关注过本帖树形打印复制链接

主题:[求助]多选时StartEdit只对选择区的第一行生效怎么办?

帅哥哟,离线,有人找我吗?
ajie5211
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
[求助]多选时StartEdit只对选择区的第一行生效怎么办?  发帖心情 Post By:2017/5/22 17:34:00 [只看该作者]

如题,在openQQ独占编程使用时,发现在一次选择多行,用delete删除时,StartEdit中的代码只对选择区的第一行生效,怎么整?
图片点击可在新窗口打开查看此主题相关图片如下:68b8deef-8811-4b4f-868c-231f04192e15.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/22 17:40:00 [只看该作者]

StartEdit中的代码贴出来看看

 回到顶部
帅哥哟,离线,有人找我吗?
ajie5211
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/5/22 17:42:00 [只看该作者]

If e.Col.Name <> "品名规格" AndAlso e.Col.Name <> "销售单号" Then
    Dim r As Row = e.Table.Current
    If r.DataRow.RowState = DataRowState.Added Then '新增行正常编辑
        Return
    End If
    If QQClient.Ready = False Then '如果QQClient没有启动,则禁止编辑
        PopMessage("必须启动QQClient,才能编辑此表数据!","提示",PopIconEnum.Infomation,5)
        e.Cancel = True
        Return
    End If
    Dim key As String = e.Table.DataTable.Name  & ":" & r("销售单号") & ":" & e.Col.Name
    If tbrk.Contains(key) Then '如果本人之前已经编辑此行,则正常编辑
        Return
    Else '如果本人之前没有编辑此行
        Dim msg = QQClient.SendWait("?#" & Key & "#?",5) '向服务器发送请求编辑信息
        If msg = "OK" Then '如果服务器返回OK
            tbrk.Add(key) '在本地登记正在编辑此行
        ElseIf msg > "" Then '否则显示服务器返回的信息,并取消编辑
            PopMessage("无法编辑此单元格,因为:" & vbcrlf & msg ,"提示",PopIconEnum.Infomation,5)
            e.Cancel = True
        Else '如果服务器没有返回信息,则取消编辑
            PopMessage("因服务器无响应,无法编辑此行!" ,"提示",PopIconEnum.Infomation,5)
            e.Cancel = True
        End If
    End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/22 22:09:00 [只看该作者]

KeyDown事件,以帮助的例子做的,自己相应改改

If e.KeyCode = Keys.Delete Then
    e.Cancel = True
    If QQClient.Ready = False Then '如果QQClient没有启动,则禁止编辑
        PopMessage("必须启动QQClient,才能编辑此表数据!","提示",PopIconEnum.Infomation,5)
        Return
    End If
    If e.Table.TopRow = e.Table.BottomRow Then Return
    For i As Integer = e.Table.TopRow To e.Table.BottomRow
        Dim r As Row = e.Table.Rows(i)
        If r.DataRow.RowState <> DataRowState.Added Then '新增行正常编辑
            Dim key As String = e.Table.DataTable.Name  & ":" & r("_Identify")
            If tbrk.Contains(key) = False Then '如果 本人之前已经编辑此行,则正常编辑
                Dim msg = QQClient.SendWait("?#" & Key & "#?",5) '向服务器发送请求编辑信息
                If msg = "OK" Then '如果服务器返回OK
                    tbrk.Add(key) '在本地登记正在编辑此行
                ElseIf msg > "" Then '否则显示服务器返回的信息,并取消编辑
                    'PopMessage("无法编辑此行,因为:" & vbcrlf & msg ,"提示",PopIconEnum.Infomation,5)
                    Continue For
                Else '如果服务器没有返回信息,则取消编辑
                    'PopMessage("因服务器无响应,无法编辑此行!" ,"提示",PopIconEnum.Infomation,5)
                    Continue For
                End If
            End If
        End If
        For j As Integer = e.Table.LeftCol To e.Table.RightCol
            r(j) = Nothing
        Next
    Next
End If

 回到顶部
帅哥哟,离线,有人找我吗?
ajie5211
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/5/23 8:00:00 [只看该作者]

一定要这样吗?程序能不能更新一下,让StartEdit支持所有的变动行哪?


 回到顶部
帅哥哟,离线,有人找我吗?
ajie5211
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/5/23 8:02:00 [只看该作者]

这样整,不仅是delete,还有Ctrl+D也有这些问题。去写KeyDown事件,还不如去写

DataColChanging

事件。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/23 9:02:00 [只看该作者]

2楼的代码,这句 Dim r As Row = e.Table.Current

 

要改成 Dim r As Row = e.Row


 回到顶部
帅哥哟,离线,有人找我吗?
ajie5211
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/5/23 9:19:00 [只看该作者]

以下是引用有点色在2017/5/23 9:02:00的发言:

2楼的代码,这句 Dim r As Row = e.Table.Current

 

要改成 Dim r As Row = e.Row

OK了,谢谢!


 回到顶部