2011-11-16 1 views
0

DevExpress GridLookUpEditエディタがマルチパートキーを持つデータで動作するようには設計されていないことに気付きました。しかし、私はこの制限を回避しようとしています。GridLookUpEditとマルチパートキー

私GridLookUpEditのためのデータは、2つの列「PRODUCT_ID」と「PURITY_ID」と製品の純度です。

void lookUpEditProductPurities_EditValueChanged(object sender, EventArgs e) 
    { 
     // Get the purity from the product selected and update the purity column of the grid. 
     DevExpress.XtraEditors.GridLookUpEdit editor = (sender as DevExpress.XtraEditors.GridLookUpEdit); 
     DevExpress.XtraGrid.Views.Grid.GridView view = editor.Properties.View as DevExpress.XtraGrid.Views.Grid.GridView; 
     object val = view.GetRowCellValue(view.FocusedRowHandle, "PURITY_ID"); 
     if (editor.Parent is GridControl) 
     { 
      GridControl ParentGridControl = (editor.Parent as GridControl); 
      GridView ParentGridView = (ParentGridControl.MainView as GridView); 
      DataRow CurrentDataRow = ParentGridView.GetDataRow(ParentGridView.FocusedRowHandle); 
      CurrentDataRow["PRODUCT_PURITY_ID"] = val; 
     } 
    } 

Iは、マスターグリッドからそれを使用する場合、これは一つの小さな問題に、正常に動作します。私は、ユーザーがGridLookupEditに製品純度の行を選択した場合、基礎となるグリッドの純度を設定するには、このコードを持っています。既存の行が製品の最初の純度でない純度を参照する場合、グリッドをポップすると、最初の純度が選択されたように見えるようになります。これは私が心配している限り大きな問題ではありません。

しかし、私が抱えている大きな問題は、GridLookUpEditをマスターディテールグリッドのディテール行に使用することです。呼び出し:editor.Parentがマスターのグリッドコントロールを返していて、ParentGridControl.MainViewがマスターのGridViewを返しています。

GridViewでGridLookUpEditがエディタであることを取得するにはどうすればよいですか?

TIA - GridView.GetDetailView方法を使用 -

答えて

1

あなたのタスク(詳細ビューを取得)がWhat can cause the properties, methods, and events of a detail grid view to fail?記事に示す手法を用いて実現することができます。
Navigating Through Master and Detail Rows

+0

回答は、あなたが提供した最初のリンクで正しくありました。 ParentGridControl.MainView(マスターgridViewを提供する)の代わりに、ParentGridControl.FocusedViewを使用して現在の子のgridViewを取得しました。よく働く。ありがとう。 – shindigo