Foxtable(狐表)用户栏目专家坐堂 → 用openqq实现一个窗口中多表独占编辑


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

主题:用openqq实现一个窗口中多表独占编辑

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2020/4/27 8:38:00 [只看该作者]

你好版主,帮助文件写的是把这段代码放在打开这个编辑窗口的按钮上,所以是执行完这段代码后才打开这个窗口。那是不是把Tables("产品树_Table1")改成Tables("产品树")?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/27 9:06:00 [只看该作者]

帮助中说的编辑窗口是指类似以下这种窗口,是用来编辑某一行数据的,本身不带窗口表。然后在双击这行准备打开编辑的时候做判断。
图片点击可在新窗口打开查看

如果您的编辑模式不是这样,比如在窗口里包含表格,点击窗口表不同行进行编辑,这种就在表格currentchanged事件,或者BeforeSelChange事件进行判断。代码怎么样使用要看具体的使用环境,而不是一抄了事 

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2020/4/27 9:12:00 [只看该作者]

我是在窗口中包含表格的情况。那是不是可以按照帮助文件中表格的方法做?

客户端的设计

1、在客户端项目的全局代码中,加入如下代码:

Public tbrk As new List(of String)

tbrk是一个集合,用于记录当前用户正在编辑的行,接下来编码的时候,我们用表名加上行的主键值来表示某行。

2、在客户端的对应表的StartEdit事件中编写代码:

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("_Identify")
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

3、在客户端的对应表的BeforeSaveDataRow事件中编写代码:

If e.DataRow.RowState=DataRowState.Modified  Then
    Dim Key As String = e.DataTable.Name & ":" & e.DataRow("_Identify")
    If tbrk.Contains(Key) Then
        tbrk.Remove(Key) '
移除本地编辑登记
        QQClient.Send("!#" & Key & "#!") '
通知服务器此行已经结束编辑
   
End If
End
If


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/27 9:16:00 [只看该作者]

可以,到窗口表的表格事件处理即可

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


加好友 发短信
等级:童狐 帖子:298 积分:2426 威望:0 精华:0 注册:2016/11/2 9:30:00
  发帖心情 Post By:2020/4/27 9:23:00 [只看该作者]

好的谢谢!

 回到顶部
总数 15 上一页 1 2