2016-10-01 335 views
0

我管理創建主要細節,顯示在附件圖像。 gridControl1包含2個網格視圖,MainView:gridView1(它是主表:數據表名:tableSalesOrder)和InfoDetails(Level1):gridView2(它是詳細表:數據表名:tableDetail)。C#如何獲取詳細信息gridView2(master-Detail)FocusedColumn.FieldName? (以編程方式)

下面的代碼對於雙擊事件都是成功的。

gridView1.DoubleClick += gridView1_DoubleClick; 
gridView2.DoubleClick += gridView2_DoubleClick; 

我的問題: -

下面的代碼是成功的,因爲我的gridView1.FocusedColumn.FieldName == 「ItemCode」。

private void gridView1_DoubleClick(object sender, EventArgs e) 
    { 
     object obj; 
     string code; 
     if (gridView1.FocusedColumn.FieldName == "ItemCode") 
     { 
      obj = gridView1.GetFocusedRowCellValue("ItemCode"); 
      if (obj == null) return; 
      code = obj.ToString(); 
      PromptItemForm(code); 
     } 
    } 

但是當我嘗試在gridView2_DoubleClick(這對於細節網格視圖部分),我gridView2.FocusedColumn.FieldName ==「DocNo」或gridView2.GetFocusedRowCellValue(「DocNo」)無法在獲取值詳細的網格部分。它只保留僅顯示ItemCode,如何獲取細節網格視圖部分下面2個過程的值?

gridView2.FocusedColumn.FieldName == "DocNo" 
    gridView2.GetFocusedRowCellValue("DocNo") 

我已經谷歌整晚仍然無法找到任何提示呢。需要主人協助。 謝謝

的數據集和數據表,我所做的代碼

    orderData.Tables.Add(tableSalesOrder); 
       orderData.Tables.Add(tableDetail); 
       orderData.Relations.Add("InfoDetails", tableSalesOrder.Columns["ItemCode"], tableDetail.Columns["ItemCode"]); 
       DataRelation orderRelation = orderData.Relations["InfoDetails"]; 
       gridControl1.DataSource = tableSalesOrder; 
       gridControl1.ShowOnlyPredefinedDetails = false; 

的檢查gridView2列名和值,我的代碼的代碼下面的鏈接如下

  GridView gridView2 = (GridView) gridView1.GetDetailView(gridView1.FocusedRowHandle, 0); 

不幸的是它得到了錯誤,我無法解決。它的工作提供了我不要點擊其他主節單元格。一個錯誤對象消息將彈出;一旦我點擊其他細胞在主節,我回去點擊我以前的細節單元格。

enter image description here

回答

0

正如它在Detail Pattern and Clone Views文章說明:在運行時顯示

詳細視圖是一個抽象的詳細視圖的所有克隆,稱爲詳細模式觀

gridView2在您的案例是用戶展開主行時創建的所有詳細信息視圖的模式視圖。模式視圖充當視圖設置的存儲庫,不參與實際的過程。

要使用特定視圖,您需要獲取模式視圖的相應克隆。有幾種方法可以獲得它。

  • 如果你知道主排手柄和關係索引,可以使用主視圖的GetDetailView方法獲取詳細信息視圖實例。

  • 您可以使用GridControl.FocusedView屬性來引用當前在GridControl中關注的視圖。這可以是主視圖或詳細視圖,具體取決於用戶放置焦點的位置。

  • 當您像處理GridView事件一樣處理引發事件的GridView實例時,將作爲發件人參數傳遞給事件處理程序。因此,您可以將發件人轉換爲GridView類型並使用它。

+0

仍不明確的建議呢,這是我的示例代碼的想法來自http://stackoverflow.duapp.com/questions/28096968/how-to-get-a-cell-value-or-row -value-in-controlgrid-1-gridview -c-sharp -d不幸的是只能部分工作,我需要figure master-detail鏈接可能會漏掉導致問題,或者需要重新編碼 –

+0

原因將得到解決,因爲gridView1.FocusedRowHandle有變化,我需要找到一個代碼,當我點擊任何行細節單元格時,它可以詳細說明哪一行是它的主人。 –

0

我解決了它由以下谷歌代碼很少修改,以適應程序結構。

GridView detailView = sender as GridView; 
GridView gv = (GridView)gridView1.GetDetailView(detailView.SourceRowHandle, 0); 
相關問題