2016-04-20 19 views
0

Ich versuche, eine Datenbanktabelle an eine Datagrid-Ansicht zu binden. Ich möchte nur bestimmte Felder anzeigen, indem ich irrelevante Felder wie ID, CREATED_BY, CREATED_ON usw. weglasse. Ich kann die Liste korrekt laden, aber die Aktualisierung auf die DB funktioniert nicht.Warum aktualisiert mein Datagrid die DB nicht? WPF .NET 4.5

BEARBEITET - REINIGTER CODE A BIT.

Das ist, was ich die Datenrasteransicht laden muss. XAML:

<Grid Margin="0"> 
    <DataGrid x:Name="ProductsDataGrid" AutoGenerateColumns="False" Style="{StaticResource AzureDataGrid}" Background="White" IsTextSearchEnabled="True" Margin="0,0,0,50" RenderTransformOrigin="0.479,0.06"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Name" Binding="{Binding FP1_NAME}" Width="Auto"/> 
      <DataGridCheckBoxColumn ElementStyle="{DynamicResource MetroDataGridCheckBox}" 
       EditingElementStyle="{DynamicResource MetroDataGridCheckBox}" 
       Header="Is Needed" 
          /> 
     </DataGrid.Columns> 
    </DataGrid> 
    <Button x:Name="ProductsGridUpdate" Content="update" Style="{StaticResource AccentedSquareButtonStyle}" HorizontalAlignment="Left" Margin="424,280,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="1.453,1.103" Click="ProductsGridUpdate_Click"/> 
</Grid> 

und hier ist der Code hinter:

private void LoadList() 
    { 
     //init 
     ProductsDataGrid.Items.Clear(); 
     ProductsDataGrid.BeginInit(); 
     ProductsDataGrid.ItemsSource = SQLCommands.GR1_DataSet.fp1_food_products; 
     ProductsDataGrid.DataContext = SQLCommands.GR1_DataSet.fp1_food_products; 
     ProductsDataGrid.EndInit(); 
    } 
#endregion 

private void ProductsGridUpdate_Click(object sender, RoutedEventArgs e) 
{ // this does not work? No error is thrown, and it runs. DB just doesn't update. 
    SQLCommands.fp1_adapter.Update (SQLCommands.GR1_DataSet.fp1_food_products); 
} 

Hier ist, was ich bei App-Start ausgeführt für das Laden der Liste vorzubereiten:

public static void SQLFoodProductsProvider() 
{ 
    GR1_DataSet = new GroceryListDataSet(); 

    fp1_adapter = new GroceryListDataSetTableAdapters.fp1_food_productsTableAdapter(); 
    fp1_adapter.Fill(GR1_DataSet.fp1_food_products); 


    //GR1_DataSet.fp1_food_products.fp1_food_productsRowChanged += 
    // new GroceryListDataSet.fp1_food_productsRowChangeEventHandler(MainWindow.fp1_food_productsRowModified); 
    //GR1_DataSet.fp1_food_products.fp1_food_productsRowDeleted += 
    // new GroceryListDataSet.fp1_food_productsRowChangeEventHandler(MainWindow.fp1_food_productsRowModified); 
} 

Hilfe oder Richtung wird sehr geschätzt. Vielen Dank im Voraus. Ich habe die db mit Visual Studio erstellt, wenn das wichtig ist.

+0

auskommentieren ProductsDataGrid.DataContext = data; löscht die Ausnahme, aber die Datenbank wird immer noch nicht aktualisiert. – user43390

+0

Haben Sie überprüft, ob die DataTable etwas enthält? –

+0

Ich habe den Code geändert, um einigen anderen Tutorials ein bisschen mehr zu folgen und es etwas sauberer zu machen. – user43390

Antwort

0

Gut. Ich bin offiziell vorzeitig kahl geworden, aber ich habe es herausgefunden. Für das DB-Objekt gibt es eine Eigenschaft 'In Ausgabeverzeichnis kopieren'.

Standardmäßig wurde es auf 'Always Copy' eingestellt. Setzen Sie es auf 'Copy if newer' behoben ALLE meine Probleme.

Wird verlassen, weil von allen StackOverflow-Posts (neben anderen Websites), habe ich noch dies als eine mögliche Lösung zu sehen.

Verwandte Themen