以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Position定位不对  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146042)

--  作者:goldenfont
--  发布时间:2020/2/14 19:50:00
--  Position定位不对
老师,出现个怪问题,我的窗口表Table1,同时在窗口中使用了RecordGrid,然后在afterSel中判断旧的行是不是有未填字段,然后进行提示是否保存,但是我选择否以后,我希望是Table回到以前的行,但是为什么回不去啊?但是RecordGrid是回去的,这是什么问题?
If e.OldRange.RowSel <> e.NewRange.RowSel \'如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) \'获得原来选择的行
        If r.DataRow.RowState <> DataRowState.Unchanged Then
            \'提示是否需要保存原来的数据,然后在切换过去
            If MessageBox.Show("当前数据有更新,需要保存吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)=DialogResult.Cancel Then
                \'切换回到原来的那行
                Dim idx As Integer = e.Table.FindRow(r.DataRow)
                e.Table.Position = idx
                Return
            End If
            r.Save
        End If
    End  If
End If

--  作者:goldenfont
--  发布时间:2020/2/14 19:54:00
--  
就是这样的问题,我切换选中行,跳出提示,然后我选否,RecordGird回到123这行了,但是Table的高亮显示,总是跳到新行去

图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2020/2/14 20:38:00
--  
这种用法应该放到BeforeSelChange事件:http://www.foxtable.com/webhelp/topics/0644.htm

取消换行使用e.cancel即可