2015-03-02 46 views
0

我想對RowEditEnding事件 DB名更新從XAML DataGrid的數據庫記錄:ManageOrders 表:客戶:ID(GUID),姓名(VARCHAR),地址(VARCHAR) 數據庫設置爲:複製,如果新的數據集 設置爲:不復制XAML的DataGrid更新不更新數據庫

如果我硬代碼中使用UPDATE和的ExecuteNonQuery我得到的結果,但是當我試圖使用的數據集/ 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> 

回答

0

我找到了答案,我的問題。 當我創建我的數據庫我忘了設置PRIMARY KEY。 我的意思是我沒有去的屬性和選擇的領域 - 主鍵(在MSSQL經理,表格的設計) 沒有設置,Visual Studio中無法建立UPDATE命令正確

來驗證我去(右鍵點擊ON)表適配器 - >配置 - >提前選項,並檢查刷新數據表是否打開。

希望這將有助於某人某一天。