我正在使用Dev Express开发一个表单,其中我在视图中有一个带有View的GridControl。
看起来像这样:
然后我尝试使用事件ValidatingEditor来验证用户输入。 我尝试这样做:
Private Sub grvObsAM_Artigos_ValidatingEditor(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs) Handles grvObsAM_Artigos.ValidatingEditor
Dim row As Integer = Me.grvObsAM_Artigos.FocusedRowHandle
然而这总是让我回复-99999 ... 我开玩笑地用事件中的发件人尝试了另一个解决方案:
Private Sub grvObsAM_Artigos_ValidatingEditor(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs) Handles grvObsAM_Artigos.ValidatingEditor
Dim grv As DevExpress.XtraGrid.Views.Grid.GridView = CType(sender, DevExpress.XtraGrid.Views.Grid.GridView)
Dim row As Integer = grv.FocusedRowHandle
使用第二个解决方案,我设法获得了专注的行句柄。虽然这次工作有效(因为事件是由视图本身触发而我有权访问发件人)但这并不能解决我的问题,因为还有其他事件,其中发件人不是视图,问题仍然存在。 使用Me.grvObsAM_Artigos。“在此处插入任何内容”似乎无法正常工作。
有没有人知道为什么会这样?我错过了什么吗?
此致
答案 0 :(得分:2)
我认为您的问题实际上是您有几个grvObsAM_Artigos网格视图。每行一个,包含详细信息。因此,您需要使用上面的视图来访问正确的视图。使用:
Dim grv as XtraGrid.Views.Grid.GridView = grvObsAM.GetDetailView(RowHandle, 0)
这应该为您提供所需的gridView的正确实例。每次展开和折叠主行时,都会分别创建和销毁子项。
这应该会给你更多背景。