0

したがって、BindingSourceのDataSourceをDataRelationを持つDataSetのDefaultViewManagerに設定しています。 RowFilterを "SalesOrderSublines" DataViewに適用する前に、BindingSourceをUltraGridのDataSourceとして設定します。 RowFilterを適用した後に子の行が表示されないUltragridRowを非表示にする

public void RefreshData() 
{ 
    var dataset = DataService.GetMillWorkOrders() 
    bindingSource1.DataSource = dataset.DefaultViewManager; 
    ultraGridSequences.SetDataBinding(bindingSource1, "", true, true); 

    var dvm = bindingSource1.DataSource as DataViewManager; 

    dvm.DataViewSettings["SalesOrderSublines"].RowFilter = "LINE_NO = 2; 
} 

public static DataSet GetMillWorkOrders() 
{ 
    DataSet ds = OracleHelper.ExecuteDataset(_connectionString,  CommandType.StoredProcedure, SQL.GET_WORK_ORDERS); 

    ds.Tables[0].TableName = "WorkOrders"; 
    ds.Tables[1].TableName = "SalesOrderSublines"; 
    var dr = new DataRelation("WorkOrderSublines", ds.Tables["WorkOrders"].Columns["WORK_ORDER"], ds.Tables["SalesOrderSublines"].Columns["WORK_ORDER"]); 
    ds.Relations.Add(dr); 

    return ds; 
} 

はその後、UltraGridRowsが初期化されているように私は私のためのRowFilterの目に見える子行(「WorkOrderSublines」)を持っていない任意の親行(「WorkOrders」)を非表示にします。

private void ultraGridSequences_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e) 
{ 
    if (e.Row.Band.Key != "WorkOrders") return; 

    e.Row.Hidden = e.Row.ChildBands["WorkOrderSublines"].Rows.VisibleRowCount == 0; 
} 

のRowFilterは「WorkOrderSublines」の行に正しく動作しないものの、バンドのvisibleRowCountのをバンドまだゼロより大きいので、親行が隠されることはありません。私の推測では、ChildBandのVisibleRowCount以外のものを探して、トップレベルの行を隠すべきかどうかを判断したいと思っていますが、私は立ち往生しています。どんな助けでも大歓迎です。早めにありがとう。

答えて

0

VisibleRowCountに頼るのではなく、フィルタリングされた子ローのカウント数と合計カウントを単純に比較できます。

void ultraGridSequences_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e) 
{ 
    if (e.Row.Band.Key != "WorkOrders") return; 
    var sublinesBand = e.Row.ChildBands["WorkOrderSublines"] 
    e.Row.Hidden = sublinesBand.Rows.Count(row => row.IsFilteredOut) == 
        sublinesBand.Rows.Count(); 
} 

膨大な量のレコードを話していない限り、パフォーマンス上問題はありませんか?

関連する問題