Silverlight 4向DomainDataSource添加新项

时间:2011-07-01 15:11:59

标签: silverlight data-binding service ria domaindatasource

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

    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不支持Exception'Add'。任何帮助,将不胜感激。感谢

3 个答案:

答案 0 :(得分:1)

DataView字段应该被视为只读集合。 DomainDataSource与DataGrid的最简单的一般用法是这样的:

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

答案 1 :(得分:0)

您还必须在域服务中使用insert方法。因此,请确保您的方法如下:

Public Sub InsertAddress(address As Address)
End Sub

或在C#中

public void InsertAddress(Address address)

答案 2 :(得分:0)

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

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