自定义数据源来自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( 更改自动生成的源代码。
我创建了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();