Foxtable(狐表)用户栏目专家坐堂 → 删除行的问题


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

主题:删除行的问题

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


加好友 发短信
等级:婴狐 帖子:24 积分:288 威望:0 精华:0 注册:2016/5/5 11:09:00
删除行的问题  发帖心情 Post By:2016/11/15 10:24:00 [只看该作者]

如果表使用复制粘贴操作,我用以下代码实现数据同步
If e.Table.Current IsNot Nothing Then

For Each r As DataRow In e.Table.DataTable.DataRows
If r IsNot Nothing
If r.RowState <> DataRowState.Unchanged Then
    Dim p As String = IIF(r.RowState = DataRowState.Added, "A#", "U#")
    r.Save() '保存之
    Dim msg As String = p & e.Table.DataTable.name & "#" & r("_Identify")
    For Each bd As QQBuddy In QQClient.Buddies
        If bd.Online Then
            QQClient.Send(bd.name, msg)
        End If
    Next
End If
End If
Next


End If


以上代码在CurrentChanged事件中,如果删除行已经修改过的行就会报错,有什么办法判断已经删除但未保存的行

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 10:44:00 [只看该作者]

试试

If e.Table.Current IsNot Nothing Then
    
    For Each r As Row In e.Table.Rows
        If r.DataRow.RowState <> DataRowState.Unchanged Then
            Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
            r.Save() '保存之
            Dim msg As String = p & e.Table.DataTable.name & "#" & r("_Identify")
            For Each bd As QQBuddy In QQClient.Buddies
                If bd.Online Then
                    QQClient.Send(bd.name, msg)
                End If
            Next
        End If
    Next
    
End If

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


加好友 发短信
等级:婴狐 帖子:24 积分:288 威望:0 精华:0 注册:2016/5/5 11:09:00
  发帖心情 Post By:2016/11/15 16:24:00 [只看该作者]

以上代码在删除行时还会报错

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


加好友 发短信
等级:婴狐 帖子:24 积分:288 威望:0 精华:0 注册:2016/5/5 11:09:00
  发帖心情 Post By:2016/11/15 16:40:00 [只看该作者]

.NET Framework 版本:2.0.50727.8689
Foxtable 版本:2016.7.29.1
错误所在事件:出库单,CurrentChanged
详细错误信息:
不能通过已删除的行访问该行的信息。



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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 17:00:00 [只看该作者]

出库单,CurrentChanged,完整代码贴出来

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/15 17:47:00 [只看该作者]

为什么要在currentChanged事件写所有行的同步代码?每次都要触发?

 

如果单独做一个同步按钮不是更好。


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


加好友 发短信
等级:婴狐 帖子:24 积分:288 威望:0 精华:0 注册:2016/5/5 11:09:00
  发帖心情 Post By:2016/11/15 17:58:00 [只看该作者]

已解决

用以下代码


If e.Table.Current IsNot Nothing Then
            
            
            
            If e.Table.Rows.Count > = 2 Or ( e.Table.Rows.Count  = 1 And  e.Table.Current.DataRow.RowState <> DataRowState.Added )
                'MessageBox.show(e.Table.Rows.Count)
                Dim i = 0
                Dim r As Row
                For i= 0 To e.Table.Rows.Count -1
                    If e.Table.Rows(i).DataRow.RowState <> DataRowState.Deleted
                        'For Each r As Row In e.Table.Rows
                        'If r IsNot Nothing And r.DataRow.RowState <> DataRowState.Deleted
                        r = e.Table.Rows(i)
                        If r.DataRow.RowState <> DataRowState.Unchanged Then
                            Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
                            r.Save() '保存之
                            Dim msg As String = p & e.Table.DataTable.name & "#" & r("_Identify")
                            For Each bd As QQBuddy In QQClient.Buddies
                                If bd.Online Then
                                    QQClient.Send(bd.name, msg)
                                End If
                            Next
                            
                        End If
                    End If
                Next
            End If
        End If


 回到顶部