隐藏应用RowFilter后没有可见子行的UltragridRow

时间:2011-07-14 21:34:20

标签: infragistics dataview rowfilter ultrawingrid dataviewmanager

所以,我将我的BindingSource的DataSource设置为具有DataRelation的DataSet的DefaultViewManager。然后我将BindingSource设置为UltraGrid的DataSource,然后将RowFilter应用于“SalesOrderSublines”DataView。

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以外的其他内容来确定是否应该隐藏顶级行,但是我被卡住了。任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分: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();
}

只要我们没有谈论大量的记录,那么表现应该很好吗?

答案 1 :(得分:0)

在网格中使用过滤可能是一种选择,而不是在DataSource中使用过滤。以下资源有关于实现此目的的更多详细信息:

http://forums.infragistics.com/forums/t/51892.aspx

http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.aspx?ArticleID=7703