2016-02-27 41 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(); 
    } 

使用这种方法我已成功地加载Access数据库在WPF DataGrid中,displying数据库,并能够更改单元格的内容。

在我的程序中,我设法添加项目,删除项目,清除所有项目并将数据网格中所做的更改保存到数据库中,如果您需要这些代码中的一部分,请在此处发表评论/给我发送消息/尖叫声高声。

编辑 - 哦,是的,你得保存您的数据库在你的程序的bin \ Debug文件夹。