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

时间:2011-07-05 14:24:21

标签: c# linq datagridview

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

IList<Apple> getApplesByCriteria( ... );

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

UIApple map( Apple apple );

将一个转换为另一个。

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

1 个答案:

答案 0 :(得分:0)

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

例如:

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();