ObservableCollection(ReadOnly)可编辑

时间:2011-04-29 15:51:05

标签: c# silverlight collections ria

我正在学习SL4 WCF / RIA LOB。我有一个SQL视图,将当前库存作为IQueryable返回。由于它是一个SQL视图,它被标记为只读,这是我想要/没有更改数据库。

在前端(视图),我想用信息填充DataGrid,但允许它在用户选择可用库存时可编辑。在我看来,DataGrid的绑定应该是我可以在内存中操作的不同集合。

目前我有一个典型的DDS从后面拉取查询:

<riaControls:DomainDataSource AutoLoad="True" LoadedData="qryInventoryDds_LoadedData" 
                                  Name="qryInventoryDds" QueryName="GetQryInventoriesQuery" >
        <riaControls:DomainDataSource.DomainContext>
            <my:DomainService1 />
        </riaControls:DomainDataSource.DomainContext>
    </riaControls:DomainDataSource>

如果有人可以指导我如何“复制”这个e.Entities等,那么我可以操纵它然后绑定它我会非常感激。

我已经搜索了几天,但实际上找不到一些好的例子。

非常感谢!

2 个答案:

答案 0 :(得分:0)

试试这个。

<data:DataGrid x:Name="myDataGrid" ItemsSource="{Binding ElementName=qryInventoryDds, Path=Data}" RowDetailsVisibilityMode="VisibleWhenSelected">

答案 1 :(得分:0)

我所做的是迭代返回的集合,创建一个不属于domaincontext的新ObservableCollection。我相信这被称为深层复制品。

似乎没有方法可以“轻松”从SQL视图中检索可编辑集合,因为VS将所有业务对象属性标记为主键。我已阅读/尝试过一些策略,比如在SQL视图中标记所有字段COALESCE(propery,null),但这对我不起作用。还有一些人尝试编辑基础模型XML,但这必须在视图的每次更改时完成,这是非常有问题的。

如果有人知道更好的解决方案,我会全力以赴。

感谢。