以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 删除行的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92851) |
-- 作者:cxj1988mmx -- 发布时间: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事件中,如果删除行已经修改过的行就会报错,有什么办法判断已经删除但未保存的行
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2016/11/15 16:24:00 -- 以上代码在删除行时还会报错 |
-- 作者:cxj1988mmx -- 发布时间:2016/11/15 16:40:00 -- .NET Framework 版本:2.0.50727.8689 Foxtable 版本:2016.7.29.1 错误所在事件:出库单,CurrentChanged 详细错误信息: 不能通过已删除的行访问该行的信息。 |
-- 作者:有点蓝 -- 发布时间:2016/11/15 17:00:00 -- 出库单,CurrentChanged,完整代码贴出来 |
-- 作者:有点青 -- 发布时间:2016/11/15 17:47:00 -- 为什么要在currentChanged事件写所有行的同步代码?每次都要触发?
如果单独做一个同步按钮不是更好。 |
-- 作者:cxj1988mmx -- 发布时间: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 |