【问题标题】:ObservableCollection(ReadOnly) to editableObservableCollection(ReadOnly) 可编辑
【发布时间】:2011-04-29 15:51:04
【问题描述】:

我有一个正在学习的 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 等,以便我可以操纵它然后绑定它,我将不胜感激。

我已经搜索了几天,真的找不到一些好的例子。

非常感谢!

【问题讨论】:

    标签: c# silverlight collections ria


    【解决方案1】:

    试试这个。

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

    【讨论】:

    • 不幸的是,这不允许我进行任何编辑,因为该集合被标记为只读。
    【解决方案2】:

    我所做的是遍历返回的集合,创建一个不属于域上下文的新 ObservableCollection。我相信这被称为深拷贝。

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

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

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多