Итак, я устанавливаю DataSource моего BindingSource в DefaultViewManager DataSet, который имеет DataRelation. Затем я устанавливаю свой BindingSource в качестве источника данных UltraGrid перед применением RowFilter к представлению данных «SalesOrderSublines».
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, я хочу скрыть любую родительскую строку ("WorkOrders"), у которой нет видимых дочерних строк ("WorkOrderSublines") из-за моего RowFilter.
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 этой группы по-прежнему больше нуля, поэтому родительская строка никогда не скрывается. Я предполагаю, что я хочу искать что-то, кроме VisibleRowCount ChildBand, чтобы определить, должна ли быть скрыта строка верхнего уровня, но я застрял. Любая помощь будет принята с благодарностью. Спасибо заранее.