C# XAML数据网格更新不';更新数据库

C# XAML数据网格更新不';更新数据库,c#,xaml,dataset,updates,datatableadapters,C#,Xaml,Dataset,Updates,Datatableadapters,我正在尝试在RowEditEnding事件上从XAML DataGrid更新数据库记录 数据库名称:ManageOrders 表:客户:ID(Guid)、名称(varchar)、地址(varchar) 数据库设置为:复制(如果更新) 数据集设置为:不复制 如果我使用UPDATE和ExecuteNonQuery硬编码我的查询,我会得到结果,但当我尝试使用datasets/dataTableAdapter.UPDATE时,它不会更新。 请帮忙。注意我对WPF和C编程非常陌生。 我花了一个星期的时间研

我正在尝试在RowEditEnding事件上从XAML DataGrid更新数据库记录 数据库名称:ManageOrders 表:客户:ID(Guid)、名称(varchar)、地址(varchar) 数据库设置为:复制(如果更新) 数据集设置为:不复制

如果我使用UPDATE和ExecuteNonQuery硬编码我的查询,我会得到结果,但当我尝试使用datasets/dataTableAdapter.UPDATE时,它不会更新。 请帮忙。注意我对WPF和C编程非常陌生。 我花了一个星期的时间研究这个问题,却找不到答案,自己也解决不了

这是我的密码

    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }


    private SimpleData.ManageOrdersDataSet manageOrdersDataSet;
    private SimpleData.ManageOrdersDataSetTableAdapters.CustomerTableAdapter manageOrdersDataSetCustomerTableAdapter;
    System.Windows.Data.CollectionViewSource customerViewSource; 

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {

        manageOrdersDataSet = ((SimpleData.ManageOrdersDataSet)(this.FindResource("manageOrdersDataSet")));
        // Load data into the table Customer. You can modify this code as needed.
        manageOrdersDataSetCustomerTableAdapter = new SimpleData.ManageOrdersDataSetTableAdapters.CustomerTableAdapter();
        manageOrdersDataSetCustomerTableAdapter.Fill(manageOrdersDataSet.Customer);
        customerViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("customerViewSource")));
        customerViewSource.View.MoveCurrentToFirst();
    }

    private void customerDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)        
{
   this.manageOrdersDataSetCustomerTableAdapter.Update(this.manageOrdersDataSet.Customer);
        manageOrdersDataSet.AcceptChanges();   

 }
}
这是我的XAML

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:SimpleData" x:Class="SimpleData.MainWindow"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">

<Window.Resources>
    <local:ManageOrdersDataSet x:Key="manageOrdersDataSet"/>
    <CollectionViewSource x:Key="customerViewSource" Source="{Binding Customer, Source={StaticResource manageOrdersDataSet}}"/>
</Window.Resources>

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="533*"/>
        <ColumnDefinition Width="186*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="43*"/>
        <RowDefinition Height="377*"/>
    </Grid.RowDefinitions>
    <TabControl  Grid.Column="0" HorizontalAlignment="Left" Height="357" Margin="10,9.8,0,0" Grid.Row="1" VerticalAlignment="Top" Width="513">
        <TabItem x:Name="tabView" Header="Customer">
            <Grid DataContext="{StaticResource customerViewSource}">

                <DataGrid x:Name="customerDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" Margin="0,0,137,75" ItemsSource="{Binding}" EnableRowVirtualization="True" AutoGenerateColumns="False" RowEditEnding="customerDataGrid_RowEditEnding" >
                    <DataGrid.Columns>
                        <DataGridTextColumn x:Name="iDColumn" Width="10" Header="ID" Binding="{Binding ID, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True, Mode=TwoWay }"/>
                        <DataGridTextColumn x:Name="nameColumn" Width="*" Header="Name" Binding="{Binding Name, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True, Mode=TwoWay }"/>
                        <DataGridTextColumn x:Name="addressColumn" Width="*" Header="Address" Binding="{Binding Address, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True, Mode=TwoWay}"/>
                    </DataGrid.Columns>
                </DataGrid>

            </Grid>
        </TabItem>

        <TabItem Header="Order">
            <Grid Background="#FFE5E5E5" Width="auto"/>
        </TabItem>
    </TabControl>


</Grid>


我找到了问题的答案。 当我创建数据库时,我忘了设置主键。 我的意思是,我没有去属性和所选字段-主键(在MSSQL管理器中,表的设计) 如果没有设置,Visual studio无法正确生成UPDATE命令

要验证我是否转到(右键单击)TableAdapter->CONFIGURE->ADVANCE OPTIONS,并检查是否启用了“刷新数据表”

希望有一天这会对某人有所帮助