dimanche 28 juin 2015

DataSet not updating Database

I'm having a problem with updating the database using a dataset.

The dataset and Adapters are generated by Visual Studio.

I've already tried many variations of calling the Update method but changes are always gone when restarting the program.

I'm using WPF for the user interface and DataGrids to visualize and modify the data.

Here is the markup:

<Window xmlns="http://ift.tt/o66D3f"
                xmlns:x="http://ift.tt/mPTqtT"
                xmlns:local="clr-namespace:GUI"
                x:Class="GUI.MainWindow"
                Title="MainWindow"
                Loaded="Window_Loaded">
    <Window.Resources>
        <local:FábricaVeículosDataSet x:Key="fábricaVeículosDataSet" />
        <CollectionViewSource x:Key="clientesViewSource"
                              Source="{Binding Clientes, Source={StaticResource fábricaVeículosDataSet}}" />
        <!--snip-->
    </Window.Resources>
    <TabControl TabStripPlacement="Left">
        <TabItem Header="Clientes">
            <Grid Background="#FFE5E5E5"
                  DataContext="{StaticResource clientesViewSource}">
                <DataGrid x:Name="clientesDataGrid"
                          AutoGenerateColumns="False"
                          EnableRowVirtualization="True"
                          ItemsSource="{Binding}"
                          RowDetailsVisibilityMode="VisibleWhenSelected">
                    <DataGrid.Columns>
                        <DataGridTextColumn x:Name="cod_ClienteColumn"
                                            Binding="{Binding Cod_Cliente}"
                                            Header="Cod Cliente"
                                            IsReadOnly="True"
                                            Width="SizeToHeader" />
                        <DataGridTextColumn x:Name="nom_ClienteColumn"
                                            Binding="{Binding Nom_Cliente}"
                                            Header="Nom Cliente"
                                            Width="SizeToHeader" />
                        <DataGridTextColumn x:Name="end_ClienteColumn"
                                            Binding="{Binding End_Cliente}"
                                            Header="End Cliente"
                                            Width="SizeToHeader" />
                        <DataGridTextColumn x:Name="fon_ClienteColumn"
                                            Binding="{Binding Fon_Cliente}"
                                            Header="Fon Cliente"
                                            Width="SizeToHeader" />
                    </DataGrid.Columns>
                </DataGrid>
            </Grid>
        </TabItem>
        <!--snip-->
    </TabControl>
</Window>

And code behind:

    FábricaVeículosDataSet fábricaVeículosDataSet;
    ClientesTableAdapter clientesTableAdapter;
    /*snip*/

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this.fábricaVeículosDataSet = ((GUI.FábricaVeículosDataSet)(this.FindResource("fábricaVeículosDataSet")));

        // Load data into the table Clientes. You can modify this code as needed.
        this.clientesTableAdapter = new ClientesTableAdapter();
        clientesTableAdapter.Fill(fábricaVeículosDataSet.Clientes);
        var clientesViewSource = ((CollectionViewSource)(this.FindResource("clientesViewSource")));
        clientesViewSource.View.MoveCurrentToFirst();
        fábricaVeículosDataSet.Clientes.RowChanging += Clientes_RowChanging;
        fábricaVeículosDataSet.Clientes.RowDeleting += Clientes_RowChanging;
        /*snip*/
    }

    /*neither of these work, I'm not using them together, just put both to show what I tried*/
    void Clientes_RowChanging(object sender, System.Data.DataRowChangeEventArgs e)
    { this.clientesTableAdapter.Update(fábricaVeículosDataSet.Clientes); }

    private void clientesDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
    { this.clientesTableAdapter.Update(fábricaVeículosDataSet.Clientes); }

Aucun commentaire:

Enregistrer un commentaire