通过Silverlight中的RIA服务删除记录

时间:2011-03-04 13:46:24

标签: silverlight ria

我在Silverlight应用程序中有一个DataGrid。此应用程序正在使用RIA数据服务。我的代码如下所示:

<riaControls:DomainDataSource AutoLoad="True" 
  d:DesignData="{d:DesignInstance my1:Order, CreateList=true}" Height="0" 
  LoadedData="orderDomainDataSource_LoadedData" Name="orderDomainDataSource" 
  QueryName="GetOrdersQuery" Width="0">
  <riaControls:DomainDataSource.DomainContext>
     <my:OrderDomainContext />
  </riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<sdk:DataGrid AutoGenerateColumns="True" Height="202" Name="ordersDataGrid" 
  HorizontalAlignment="Left" 
  ItemsSource="{Binding ElementName=orderDomainDataSource, Path=Data}">
</sdk:DataGrid>
<Button Content="Delete Order" Height="23" Name="deleteButton" 
  Width="90" Grid.Row="1" HorizontalAlignment="Left" Margin="102,8,12,0" 
  Click="deleteButton_Click" />

在我的代码隐藏中,我有

private void deleteButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
  if (HtmlPage.Window.Confirm("Are you sure you want to delete this order?") == true)
  {
  }
}

我的问题是,我无法弄清楚如何从我的数据源中删除记录。如何删除当前在DataGrid中选择的记录?

谢谢

2 个答案:

答案 0 :(得分:3)

if (HtmlPage.Window.Confirm("Are you sure you want to delete this order?") == true)

{
DomainDataSource.DataView.Remove(DataGrid.SelectedItem);
DomainDataSource.SubmitChanges();
}

答案 1 :(得分:2)

首先,您无法定义自己的插入/更新/删除方法 - 即使遵守命名约定 - 因为编译器会生成一个错误列表,说明这是一个已经存在的冗余操作 第二,如果你写的话,在客户端: DomainDataSource.DataView.Remove(DataGrid.SelectedItem); DomainDataSource.SubmitChanges() 通过说这个实体(DataGrid.SelectedItem)不包含在entitySet中,你会在执行时间中得到另一个错误 然后该怎么办? 为什么生成的CRUD方法无法直接调用?