如何在wpf中删除DataGrid行时删除数据库行?

时间:2012-01-16 04:38:06

标签: c# .net wpf database datagrid

我的wpf项目中有一个DataGrid,它绑定到数据源并成功填充值。现在的问题是,当用户删除行时,我该如何回应。我也想删除数据库中的同一行。我的方法是从当前所选行的lbId列获取id,并在用户按下键盘上的Delete按钮或GUI中的Delete Button时发出DELETE查询。我该怎么做?

或者在Winforms UserDeletingRow中没有像DataGridView这样的东西吗?

这是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>

这是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();     

    }

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您是否尝试添加包含按钮的列?该按钮将具有能够识别密钥的参数。然后编程按钮进行验证,从列表中删除,从数据库中删除,然后刷新数据网格。我使用带有c#和XML的mvvm,但没有代码。查看onpropertychanged(“propertyname”)。

答案 1 :(得分:1)

我来到这里的是一个相对较晚的帖子/答案,寻找其他的东西......

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

这是我用来将数据网格与数据库后端同步的事件...

答案 2 :(得分:0)

如果绑定到ado.net数据集/数据表,如果使用单击“Del”,它将自动从数据集/数据表中删除。

然后,您只需在TabelAdapter上调用Update以获取对数据库的更改。

编辑:顺便说一句,只要你没有调用AcceptChanges就可以调用“RejectChanges”来获取已删除的行。

相关问题