2016-02-27 4 views
0

Я хотел был бы иметь возможность редактировать данные в datagrid и изменения, котор я делаю для того чтобы быть назад назад к базе данных от где я берю их.WPF Datagrid, который отображает базу данных Access, не редактируется

Моя сетка в XAML, как это:

<DockPanel Grid.Row="1"> 
         <DataGrid Name="dg_Misc" Margin="2" Background="{x:Null}" VerticalGridLinesBrush="Black" Foreground="Black"/> 
</DockPanel> 

и я заполнить это следующим образом:

public void CaricaGrid() 
    { 
     OleDbConnection connessione = new OleDbConnection(); 

     connessione.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString(); 
     connessione.Open(); 

     OleDbCommand cmd = new OleDbCommand(); 
     cmd.CommandText = "select* from [Miscellanea]"; 
     cmd.Connection = connessione; 
     OleDbDataReader rd = cmd.ExecuteReader(); 

     dg_Misc.ItemsSource = rd; 
     dg_Misc.Items.Refresh(); 
    } 

Данные из базы данных отображается также в сетке, и я считаю этот метод действительно простой и быстрый, но я не могу изменить ячейки сетки. Я также уверен, что datagrid включен, так как я могу выбирать строки и ячейки.

+0

Эта ссылка может помочь: [http://stackoverflow.com/questions/3084831/two-way-wpf-datagrid-binding-to-database] – dev1998

+0

Большое вам спасибо! –

ответ

0

Поиск через сеть Я нашел решение, которое работает на меня, поэтому я оставлю его там, если кому-то это понадобится.

public void CaricaGrid() 
    { 
     try 
     { 
      connessione = new OleDbConnection(); 

      connessione.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "\\DatabaseInventario.accdb"; 

      if (connessione.State != ConnectionState.Open) 
      { 
       connessione.Open(); 
      } 

      AttaccaGrid(); 
     } 
     catch { MessageBox.Show(messErrDb); } 
    } 

private void AttaccaGrid() 
    { 
     cmd = new OleDbCommand(); 
     cmd.Connection = connessione; 
     cmd.CommandText = "SELECT* FROM Miscellanea"; 
     da = new OleDbDataAdapter(cmd); 

     dt = new DataTable(); 
     da.Fill(dt); 

     dg_Misc.ItemsSource = dt.AsDataView(); 
     dg_Misc.Items.Refresh(); 
    } 

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     CaricaGrid(); 
    } 

Используя эти методы мне удалось загрузить базу данных доступа к DataGrid в WPF, displying базы данных и возможность изменять содержимое ячеек.

В моей программе мне удалось добавить элементы, удалить элементы, очистить все элементы и сохранить изменения, внесенные в datagrid, в базу данных, если вам нужны некоторые из этих кодов, просто прокомментируйте здесь/пришлите мне сообщение/громко.

EDIT - О да, вы должны сохранить свою базу данных в папке bin \ Debug вашей программы.