Foxtable(狐表)用户栏目专家坐堂 → [求助]批量复制批注


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

主题:[求助]批量复制批注

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


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
[求助]批量复制批注  发帖心情 Post By:2018/7/13 10:33:00 [只看该作者]

我要做一个批量复制批注的功能,就跟Ctrl+D的功能一样,存放批注的方式采用了Json 字段为SYS_Note,下面是我写的代码,基本的功能已经实现,麻烦老师们帮看再看看,看看哪些地方写的不好,如何进行改善
Dim t As Table = CurrentTable
If t.Current Is Nothing Then Return False
If t.TopPosition < 0 Then Return False '如果选定区域不包括数据行
Dim json As String = t.Current("SYS_Note")
Dim jo As JObject = JObject.Parse(json)
'messagebox.show(jo(CurrentTable.Cols(CurrentTable.ColSel).Name))
If t.Current.IsNull("SYS_Note") = True Or t.Current("SYS_Note") = Nothing Then
    Return False
Else
    'messagebox.show(json)
    Dim it As Win.Data.ITable = SYS.Tables(t.Name)
    For i As Integer = it.TopRow To it.BottomRow
        Dim r As Win.Data.IRow = it.Rows(i)
        If r.Visible = False Then Continue For
        If r.Isnull("SYS_Note") = True Or r("SYS_Note") = Nothing Then
            Dim jo1 As New JObject
            jo1(CurrentTable.Cols(CurrentTable.ColSel).Name) = jo(CurrentTable.Cols(CurrentTable.ColSel).Name)
            'Output.Show(jo1.ToString)
            r("SYS_Note") = jo1.ToString
            r.Save
            Dim fdr As DataRow = t.DataTable.Find("_Identify = " & r("_Identify"))
            If fdr IsNot Nothing Then
                fdr.Load
            End If
            'r.load
        Else
            If r("SYS_Note").Contains(CurrentTable.Cols(CurrentTable.ColSel).Name) = True Then
                '接下来需要处理的地方,如何向json中修改当前列名对应的值,先生成json,再将json赋值给r("SYS_Note")
                Dim json1 As String = r("SYS_Note")
                Dim jo2 As JObject = JObject.Parse(json1)
                jo2(CurrentTable.Cols(CurrentTable.ColSel).Name) = jo(CurrentTable.Cols(CurrentTable.ColSel).Name)
                r("SYS_Note") = jo2.Tostring
                r.Save
                Dim fdr As DataRow = t.DataTable.Find("_Identify = " & r("_Identify"))
                If fdr IsNot Nothing Then
                    fdr.Load
                End If
                'r.load
                'output.show(r("SYS_Note"))
                '判断遍历的列名在json中是否存在,如果存在直接替换,如何不存在,新建json
            Else
                '待加代码
                'messagebox.show("不存在")
                Dim json1 As String = r("SYS_Note")
                Dim jo2 As JObject = JObject.Parse(json1)
                jo2(CurrentTable.Cols(CurrentTable.ColSel).Name) = New JObject
                jo2(CurrentTable.Cols(CurrentTable.ColSel).Name) = jo(CurrentTable.Cols(CurrentTable.ColSel).Name)
                r("SYS_Note") = jo2.Tostring
                r.Save
                Dim fdr As DataRow = t.DataTable.Find("_Identify = " & r("_Identify"))
                If fdr IsNot Nothing Then
                    fdr.Load
                End If
                'r.load
                'output.show(r("SYS_Note"))
            End If
        End If
    Next
End If

 回到顶部
帅哥哟,离线,有人找我吗?
积水成渊
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:348 积分:2805 威望:0 精华:0 注册:2016/8/24 10:39:00
  发帖心情 Post By:2018/7/13 10:36:00 [只看该作者]

而且我发现一个问题,就是我加载行的时候失效了,明明已经将某列的批注改了,但是界面上没有呈现效果出来,需要加载整张表才有效,这个是怎么回事

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/13 10:41:00 [只看该作者]

1、没看懂你的逻辑;

 

2、请做一个项目发上来测试。


 回到顶部