2017-01-04 11 views
0

このグリッドの親はプロジェクトですが、子はBOMです。次のコードを使用して子グリッドを表示することができました。子グリッドビューから列を削除する

private void gridView_MasterRowEmpty(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowEmptyEventArgs e) 
    { 
     Project projects = (Project)gridView.GetRow(e.RowHandle); 
     e.IsEmpty = projects.BOMs.Count == 0; 
    } 

    private void gridView_MasterRowGetRelationCount(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetRelationCountEventArgs e) 
    { 
     e.RelationCount = 1; 
    } 

    private void gridView_MasterRowGetRelationName(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetRelationNameEventArgs e) 
    { 
     e.RelationName = "BOMs"; 
    } 

    private void gridView_MasterRowGetChildList(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetChildListEventArgs e) 
    { 
     Project projects = (Project)gridView.GetRow(e.RowHandle); 
     e.ChildList = new BindingSource(projects, "BOMs"); 
    } 

ただし、コードはすべての列を表示しています。私は子供からいくつかの列、すなわちBOMを隠したいと思います。

私が見つけた唯一の方法は

dataGridView1.Columns[index].Visible = false; 

以下のようなものを使用することでした。しかし、私は上記のコードをどこに置くべき?

更新されたコード

private void gridView_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e) 
{ 
    GridView gridView = sender as GridView; 
    GridView detailView = (GridView)gridView.GetDetailView(e.RowHandle, e.RelationIndex); 
    detailView.Columns["Column Name"].Visible = false; 
} 

答えて

0

あなたのニーズを満たすために、あなたのGRIDCONTROLでGrid_MasterRowExpanded方法処理する必要があります:FYI

private void Grid_MasterRowExpanded(System.Object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e) 
{ 
    GridView view = sender; 
    GridView detail = view.GetDetailView(e.RowHandle, e.RelationIndex); 

    if (e.RowHandle == 0 | e.RowHandle == 1) { 
     if (detail.Name == "BOM") { 
      detail.Columns["Column Name"].Visible = false; 
     } 
    } 
} 
+0

あなたの答えをありがとう。あなたの答えは私に方向性を与えました。しかし、私はそれにいくつかの変更を加えました。更新されたコードを確認してください。 – active92

0

を、あなたもある、設計時にこれを行うことができます行く私の好きな方法。 GridViewデザイナでは、マスタと子のgridViewを作成する必要があります。 「詳細を取得」をクリックするとこれが実行されます。また、既に作成した列をレイアウトと共に吹き飛ばすこともできますが、レイアウトをXMLとして保存し、「詳細を取得」をクリックしてからXMLを再ロードするのが簡単な方法です。ここで

は、あなたがそれを行うの後にあなたのデザイナーがどのように見えるかです:ここから

enter image description here

を、あなたはそれぞれのGridView(別途マスターと子)をクリックすると、それぞれをカスタマイズする - 変更の列の幅を列を非表示にし、列を削除します(データはまだありますが、UIがグリッドに追加することは不可能です)。列の並べ替えなど。

+0

私はこれを試しましたが、 'Retrieve Details'をクリックすると何とか子が表示されませんでした。したがって、代わりにコードを使用しようとしました。私はEFを使っているからかもしれない。 – active92

関連する問題