合并IList以绑定datagridview以避免使用数据库视图

时间:2010-05-03 08:57:29

标签: c# linq datagridview

在我们这样的形式中,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社区。

1 个答案:

答案 0 :(得分:0)

我不会直截了当地看到你的问题。你可以创建一个支持IList作为构造函数的通用IList,并基本上暴露它们合并。这可以归结为很多管道代码,但非常通用。 IList只需要跟踪每个项目与哪个原始列表相关,因此它可以正确地转发删除操作。