2011-11-04 46 views
1

我使用Dev Express开发一个窗体,其中我有一个视图内的视图GridControl。重点行不工作 - Gridview

它看起来像这样:enter image description here

我再尝试使用事件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 

并使用这第二个解决方案,我设法得到重点行处理。尽管这次工作(因为事件是由视图本身触发的并且我有权访问发件人),但这并不能解决我的问题,因为还有其他事件,其中发件人不是视图,问题仍然存在。 Usign Me.grvObsAM_Artigos。“在此插入任何东西”似乎无法正常工作。

有没有人有任何想法,为什么发生这种情况?我错过了什么吗?

问候,

回答

2

我觉得你的问题其实是,你有几个grvObsAM_Artigos GridView的的。每行有一个细节。所以你需要使用ti上面的视图来访问正确的视图。使用:

Dim grv as XtraGrid.Views.Grid.GridView = grvObsAM.GetDetailView(RowHandle, 0) 

这应该给你你想要的gridView的正确实例。每当主行被展开和折叠时,该子都会分别创建和销毁。

这应该会给你更多的背景。

http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsGridGridView_GetDetailViewtopic

+0

是的,这是非常有道理的。我真的不觉得自己真的有点惭愧:P但是,我并不完全理解你的代码行,我应该如何得到我正在处理的视图。 – seth

+0

该行代码正在使用主视图中的一行来查找该行masterRow的正确detailGridview。例如,假设您想要访问当前关注的MasterView行的detailView。 MasterGridView.GetVisibleDetailView(MasterGridView.GetFocusedRowHandle,0)如果你有一个特定的例子想要试图访问detailGrid让我知道,我可以尝试给你一个具体的例子。 – Jay

+0

每个主视图行都包含它自己的子视图。为了占用子视图中的项目,您需要首先找到所选的主控行。这就是代码行的功能。它使用主行的选定行句柄选择正确的主行,然后从中抽出详细视图。 –