我有一个简单的数据网格列表地址和一个子窗口,用户可以编辑/添加新窗口。在带有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'。任何帮助,将不胜感激。感谢
答案 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,这解决了我的问题。