c# - 我想在同一个数据网格上使用两个可观察的集合
问题描述
我正在处理一个项目的报告。我正在创建利润报告。在这里,我必须列出销售详细信息和销售退货详细信息。它们来自不同的类,因此它们是两个不同的可观察集合。我想先列出销售详细信息,完成销售后再列出销售退货。我希望在单个数据网格上完成
我已经使用数据网格名称和项目源进行了尝试,但仅列出了销售退货
AllSalesProfitList = new ObservableCollection<SalesInvoice>(SalesInvoice.GetAllSalesProfitList(SelectQuerySales));
if (AllSalesProfitList.Count > 0)
{
ReportContainer.Visibility = Visibility.Visible;
ListSalesReportView.ItemsSource = AllSalesProfitList;
LabelTotalSalesAmountValue.Content = AllSalesProfitList.Sum(p => p.TotalSalesAmount);
}
else
{
NoRecordCheck();
}
AllSalesReturnProfitList = new ObservableCollection<SalesReturnInvoice>(SalesReturnInvoice.GetAllSalesReturnProfitList(SelectQuerySalesReturn));
if (AllSalesReturnProfitList.Count > 0)
{
ReportContainer.Visibility = Visibility.Visible;
ListSalesReportView.ItemsSource = AllSalesReturnProfitList;
LabelTotalSalesReturnAmountValue.Content = AllSalesReturnProfitList.Sum(p => p.TotalSalesReturnAmount);
}
else
{
NoRecordCheck();
}
预期结果
它应该首先列出所有销售,然后是销售退货。
实际结果
仅列出销售退货。
解决方案
CompositeCollection是可以解决问题的类。确实它
允许将多个集合和项目显示为单个列表。
所以你的代码将(或多或少)
CompositeCollection compositeCollection = new CompositeCollection();
CollectionContainer cc1 = new CollectionContainer();
cc1.Collection = AllSalesProfitList;
CollectionContainer cc2 = new CollectionContainer();
cc2.Collection = AllSalesReturnProfitList;
compositeCollection.Add(cc1);
compositeCollection.Add(cc2);
ListSalesReportView.ItemsSource = compositeCollection;
我希望它可以帮助你。
推荐阅读
- ethereum - ParserError:应为'{'但得到'('函数权益()公共应付()
- r - 使用类似于 PROC FREQ 的 R 加载汇总数据
- html - 如何使文本居中而忽略浮动元素?
- swift - 更新编程约束时 UITableViewCell 中断布局
- powershell - 使用 PowerShell 更改 Outlook 默认 PST
- react-native - 在 React Native 中使用文件查看器查看本地文件
- scala - Scala - 循环案例类名称以用作类型参数
- docker - Docker 集群 Kafka。如何为代理分配唯一主机
- http - Python中HTTPException和HTTP_404_NOT_FOUND的区别
- node.js - 在NodeJs中解析具有标题行格式的文件的最佳方法是什么