我希望能够编辑数据网格中的数据,并将所做的更改保存到我将其保存到数据库的位置。
我在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中,我发现此方法确实非常简单快捷,但是我无法修改网格的单元格。我还可以确保启用了datagrid,因为我可以选择行和单元格。
在网上搜索时,我找到了一个适用于我的解决方案,所以我会把它留在那里,以防万一有人需要它。
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,显示数据库并能够更改单元格的内容。
然后,在我的程序中,我设法添加项目,删除项目,清除所有项目并将datagrid中所做的更改保存到数据库中,如果您需要其中一些代码,只需在此处评论/给我发消息/大声尖叫。
编辑-哦,是的,您必须将数据库保存在程序的bin \ Debug文件夹中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句