2011-03-04 50 views
2

我在Silverlight应用程序中有一个DataGrid。此应用程序正在使用RIA数据服务。我的代码如下所示:通过Silverlight中的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中选择的记录?

谢谢

回答

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

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

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