Member 14609586 Ответов: 1

Приложение Wpf: сохранение изменений datagrid в базе данных с помощью XAML и visual basic


У меня есть приложение WPF, написанное с использованием XAML и VB, где я использовал элемент управления Datagrid для извлечения данных из базы данных. Данные отлично тянутся, и я могу вносить изменения в ячейки по своему желанию; однако эти изменения не фиксируются обратно в базу данных. Я бы также хотел, чтобы любые внесенные изменения были сохранены в базе данных.

Вот мой XAML:
<DataGrid x:Name="RecordsDataGrid" CanUserAddRows="False" HorizontalAlignment="Left" Height="234" Margin="67,214,0,0" VerticalAlignment="Top" Width="1067" Background="#FFE0E0E0" AlternatingRowBackground="PaleGoldenrod" AlternationCount="2" HorizontalGridLinesBrush="LightGray" VerticalGridLinesBrush="LightGray"/>


Вот это VB:
Private Sub RecordsWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        '
        '   Get data from server
        '

        ' Create the SQL Connection variables
        Dim myConn As New SqlConnection

        ' Create the SQL Connection String
        [...]

        Dim query As String
        query = "SELECT id as 'ID', company as 'Company' FROM dB ORDER BY id"

        Dim command As New SqlCommand(query, myConn)
        command.CommandType = System.Data.CommandType.Text

        Dim dA As New SqlDataAdapter(command)
        Dim dT As New DataTable

        dA.Fill(dT)

        RecordsDataGrid.ItemsSource = dT.AsDataView

    End Sub


Что я уже пробовал:

Я считаю, что могу сделать это с помощью команды UpdateCommand, но все решения, которые я нашел, написаны на C#, а не на VB (пример):
Private Sub RecordsWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        '
        '   Get data from server
        '

        ' Create the SQL Connection variables
        Dim myConn As New SqlConnection

        ' Create the SQL Connection String
        [...]

        Dim query As String
        query = "SELECT id as 'ID', company as 'Company' FROM dB ORDER BY id"

        Dim command As New SqlCommand(query, myConn)
        command.CommandType = System.Data.CommandType.Text

        Dim dA As New SqlDataAdapter(command)
        Dim dT As New DataTable

        dA.Fill(dT)

        dA.Update(dT)

        RecordsDataGrid.ItemsSource = dT.AsDataView

    End Sub


Но все преобразования, которые я пробовал, не были успешными.

Заранее благодарю вас!

1 Ответов

Рейтинг:
1

#realJSOP

Если вы хотите, чтобы данные шли в обе стороны, вам нужно перейти к UbservableCollection объектов, производных от INotifyPropertyChanged.