0

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

4

2 回答 2

1

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();
}

只要我们不谈论大量记录,就应该在性能方面做得很好?

于 2011-08-03T10:23:01.267 回答
1

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

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

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

于 2012-03-11T20:05:04.067 回答