【问题标题】:how to delete database row as DataGrid row is deleted in wpf?如何在 wpf 中删除 DataGrid 行时删除数据库行?
【发布时间】:2012-02-11 03:31:30
【问题描述】:

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

或者在 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>

这是 DataGrid 的图像。

这里是绑定代码:

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

    }

任何帮助将不胜感激。

【问题讨论】:

    标签: c# .net wpf database datagrid


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      您所要做的就是在您的 TabelAdapter 上调用 Update 以获取对数据库的更改。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-20
          • 2014-08-22
          • 1970-01-01
          • 2014-12-17
          • 2023-03-24
          • 1970-01-01
          • 2011-04-29
          • 2018-07-09
          相关资源
          最近更新 更多