2011-03-04 47 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方法不能直接調用?