因此,我将 BindingSource 的 DataSource 设置为具有 DataRelation 的 DataSet 的 DefaultViewManager。然后,在将 RowFilter 应用于“SalesOrderSublines”数据视图之前,我将我的 BindingSource 设置为 UltraGrid 的数据源。
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 以外的其他内容,以确定是否应该隐藏顶级行,但我被卡住了。任何帮助将不胜感激。提前谢谢。