1

我有一个简单的数据网格列出地址和一个子窗口,用户可以在其中编辑/添加新的。在带有数据网格的主窗体上,我有一个“插入新地址”按钮,它应该加载带有空地址对象的子窗口。但是它不会让我添加记录。难道我做错了什么?我当前的代码如下:

    Dim address As New Address
    Dim frmAddressObj As New frmAddress

    If frmAddressObj.AddressDomainDataSource.DataView.CanAdd = False Then
        frmAddressObj.AddressDomainDataSource.Load()
    End If
    frmAddressObj.AddressDomainDataSource.DataView.Add(address)

地址是地址对象。frmAddress 是子窗口窗体。AddressDomainDataSource 是我在数据网格中使用的数据源,就像我在孩子中使用的一样。CanAdd 总是错误的,我被告知在添加之前尝试加载,但这似乎没有帮助。当它到达 Add 方法时,此 ICollectionView 不支持“Add”异常。任何帮助,将不胜感激。谢谢

4

3 回答 3

1

DataView 字段应被视为只读集合。带有 DataGrid 的 DomainDataSource 最简单的一般用法如下所示:

(myDataSource.DomainContext as myDomainContext).my_entitys.Remove(dgOrders.SelectedItem as order);
(myDataSource.DomainContext as myDomainContext).SubmitChanges();

插入类似,您只需使用

my_entitys.Add(myNewEntityInstance); 

代替

my_entitys.Remove(entityToRemove);

对于更新,您只需调用

(myDataSource.DomainContext as myDomainContext).SubmitChanges();
于 2012-06-18T15:14:49.500 回答
0

我最近遇到了同样的问题,在我的情况下,没有加载 DomainDataSource(甚至还没有绑定到它的上下文),因为它驻留在未选择的 TabItem 中。

确保您的 DomainDataSource 正确加载到可视化树中,这解决了我的问题。

于 2013-03-31T13:30:23.627 回答
0

您还必须在域服务中具有插入方法。所以确保你有一个看起来像这样的方法:

Public Sub InsertAddress(address As Address)
End Sub

或在 C# 中

public void InsertAddress(Address address)
于 2012-06-18T15:22:27.093 回答