2012-01-16 17 views
0

データソースにバインドされたwpfプロジェクトにDataGridがあり、正常に値が入力されています。今問題は、ユーザーが行を削除しているときにどのように反応するかです。私もデータベース内の同じ行を削除したい。私のアプローチは、現在選択されている行のlbId列からIDを取得し、ユーザーがキーボードのDeleteボタンまたはGUIのDelete Buttonを押したときにDELETEクエリを発行することです。どうすればいい?DataGrid行としてデータベース行を削除する方法はwpfで削除されますか?

Winforms DataGridViewのようにUserDeletingRowのようなものはありませんか?ここ

ここXAML

<DataGrid AutoGenerateColumns="False" Height="430" HorizontalAlignment="Left" Margin="378,61,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="550" ItemsSource="{Binding Path=LocalBookmarks}" CanUserReorderColumns="False" CanUserSortColumns="False" Grid.Row="5" RowEditEnding="datagrid1_RowEditEnding" DataGridRow.Selected="datagrid1_RowSelected"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Id" Width="20" Binding="{Binding Path=lbId}" CanUserResize="False"></DataGridTextColumn> 
      <DataGridTextColumn Header="Title" Width="225" Binding="{Binding Path=TitleOfPage}" MaxWidth="250" CanUserResize="True"></DataGridTextColumn> 
      <DataGridHyperlinkColumn CanUserResize="True" Header="Link" MaxWidth="300" MinWidth="250" Binding="{Binding Path=SiteAddress}"/> 
      <DataGridTextColumn Header="Saved On" Width="70" Binding="{Binding Path=DateAdded}" CanUserResize="True"></DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

あるデータグリッドの画像です。ここで And just in case the image helps, here it is

バインディングコードです:

private void BindToData(SqlCeConnectionManger s, int gt, int lt) 
    { 
     SqlCeDataAdapter sda = new SqlCeDataAdapter("SELECT * FROM LocalBookmarks WHERE lbId > " + gt.ToString() + " AND lbId < " + lt.ToString() + " ORDER BY DateAdded DESC", s.SqlCeCon); 
     DataSet dataset = new DataSet(); 
     sda.Fill(dataset, "LocalBookmarks"); 
     dataGrid1.DataContext = dataset; 
     s.SqlCeCon.Close();  

    } 

任意の助けが理解されるであろう。

答えて

1

ボタンを含む列を追加しようとしましたか?ボタンには、キーを識別できるパラメータがあります。次に、検証のためにボタンをプログラムし、リストから削除し、データベースから削除してから、データグリッドを更新します。私はC#とXMLでmvvmを使用しますが、コードはありません。 onpropertychanged( "propertyname")をチェックしてください。

0

ado.net dataset/datatableにバインドすると、データセット/データテーブルから自動的に削除されます。使用する場合は「Del」をクリックします。

あなたがしなければならないことは、TabelAdapterのUpdateを呼び出してデータベースの変更を取得することだけです。

EDIT:btw AcceptChangesを呼び出さない限り、削除された行を取得するために「RejectChanges」を呼び出すことができます。

1

私は比較的遅く投稿にここに来た/何か他のものを探して答える...

Sub dg_RowEditEnding(sender As Object, e As DataGridRowEditEndingEventArgs) Handles dg.RowEditEnding 

これは私がデータベースバックエンドでの私のデータグリッドを同期するために使用するイベントです...

関連する問題