在我们这样的形式中,IntaktsBudgetsType是一个命名不佳的枚举,仅指定在客户或产品之后填充datagridview(您在产品或客户之后进行预算)
private void UpdateGridView() {
bs = new BindingSource();
bs.DataSource = intaktsbudget.GetDataSource(this.comboBoxKundID.Text, IntaktsBudgetsType.PerKund);
dataGridViewIntaktPerKund.DataSource = bs;
}
这将使用合并产品,预算和客户表的数据库视图填充datagridview。
逻辑具有以下方法从存储库中获取正确的IList集合,只有GetTable<T>.ToList<T>
public IEnumerable<IntaktsBudgetView> GetDataSource(string id, IntaktsBudgetsType type)
{
IList<IntaktsBudgetView> list = repository.SelectTable<IntaktsBudgetView>();
switch (type)
{
case IntaktsBudgetsType.PerKund:
return from i in list
where i.kundId == id
select i;
case IntaktsBudgetsType.PerProdukt:
return from i in list
where i.produktId == id
select i;
}
return null;
}
现在我不想使用数据库视图,因为它是只读的,我希望能够在datagridview上执行CRUD操作。
我可以构建一个类作为整个事物的包装器,并将不同的表值绑定到类属性,但这似乎不太正确,因为我必须为每个需要“合并”的事情执行此操作”
一些非常重要的事情(可能是基本的)缺少了思考过程,但在谷歌和书籍上度过了一个周末后,我放弃并转向SO社区。 p>
答案 0 :(得分:0)
我不会直截了当地看到你的问题。你可以创建一个支持IList作为构造函数的通用IList,并基本上暴露它们合并。这可以归结为很多管道代码,但非常通用。 IList只需要跟踪每个项目与哪个原始列表相关,因此它可以正确地转发删除操作。