WPF c# ListView数据集,我如何更新数据库与更改用户在ListView中的数据

本文关键字:ListView 用户 数据库 数据 更新 数据集 何更新 WPF | 更新日期: 2023-09-27 18:15:48

所以我使用数据集创建了一个ListView,即在数据源窗口中为表选择ListView选项并将其拖放到我的界面上。

每个列都有一个绑定模式(TwoWay/OneWay等)。它们都被预先设置为双向的也就是说,这是我在xaml文件中的ListView片段:

   <ListView x:Name="cbTableListView" Grid.ColumnSpan="2" ItemsSource="{Binding}" Margin="16,73,16,135" 
              SelectionChanged="onChangeRecord" SelectionMode="Single">
        <ListView.ItemContainerStyle>
            <Style>
                <Setter Property="Control.HorizontalContentAlignment" Value="Stretch"/>
                <Setter Property="Control.VerticalContentAlignment" Value="Stretch"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.View>
            <GridView>
                <GridViewColumn x:Name="_idColumn" Header="ID" Width="60">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Margin="10,-1,-6,-1" Text="{Binding _id, Mode=OneWay}"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn x:Name="company_nameColumn" Header="Company Name" Width="120">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Margin="-6,-1" Text="{Binding company_name, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn x:Name="contact_nameColumn" Header="Contact Name" Width="120">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Margin="-6,-1" Text="{Binding contact_name, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

…其余列

依次类推

我需要它,以便用户可以编辑列表视图中的行,按保存更改,并将更改保存到数据库。我猜这就是所谓的"两人行"吧?我试过在数据集上使用acceptchanges方法,似乎不起作用:

        cBDataSet.AcceptChanges();
cBDataSetcbTableTableAdapter.Fill(cBDataSet.cbTable);
        cbTableViewSource = ((System.Windows.Data.CollectionViewSource)     (this.FindResource("cbTableViewSource")));
        cbTableViewSource.View.MoveCurrentToFirst();

有人有什么想法吗?不知道我做错了什么

谢谢

WPF c# ListView数据集,我如何更新数据库与更改用户在ListView中的数据

Via MSDN:

AcceptChanges提交自此数据集以来所做的所有更改

这很令人困惑。人们通常只在谈论数据库时使用"commit"这个词,但是在这个例子中,MS在措辞上搞砸了。AcceptChanges对底层数据存储没有任何作用,它只是告诉数据集本身接受当前的更改,并基本上清除脏标志,并认为其中的当前数据是最新的,并且与底层存储匹配。

但是,它继续概述了DataSet的一般用法:

调用GetChanges方法来创建第二个数据集只修改数据

调用DataAdapter的Update方法,传递第二个DataSet作为参数。

调用Merge方法来合并来自第二个DataSet的更改进入第一个

调用数据集的AcceptChanges。另外,调用RejectChanges取消更改

这会让你走上正确的道路。