自定义数据源来自linq的datagridview的列

本文关键字:datagridview 的列 linq 数据源 自定义 | 更新日期: 2023-09-27 18:01:05

我有一个库函数,它从Linq查询中返回域对象的列表。

IList<Apple> getApplesByCriteria( ... );

我将DataGridView的DataSource属性绑定到此函数的结果。一切都很好。现在我想操纵苹果的属性。表示域对象(UIApple(与原始域对象(Apple(不同,其中

UIApple map( Apple apple );

将一个转换为另一个。

如果我创建了一个中间类UIApple,我需要做什么才能将DataGridView的编辑持久化回数据库?我了解到添加[Browsable(false)]可以隐藏collmn。然而,我不希望1(用UI概念污染域对象;2( 更改自动生成的源代码。

自定义数据源来自linq的datagridview的列

我创建了UIApple,它由Apple支持,包含所有操作代码。

例如:

class Apple {
    // generated by Visual Studio
    public int Color { ...
}
class UIApple {
    private Apple _domain;
    public string Color 
    {
         get { if(_domain.Color == 0) return "Black"; }
         set { if(value == "Black") _domain.Color = 0; }
    }
    // hide all unwanted attributes        
}

为了在编辑结束时保持,

UIApple uiApple;
// some editing through UI
// to commit -
db.SubmitChanges();