2011-11-04 111 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

每個主視圖行都包含它自己的子視圖。爲了佔用子視圖中的項目,您需要首先找到所選的主控行。這就是代碼行的功能。它使用主行的選定行句柄選擇正確的主行,然後從中抽出詳細視圖。 –