我現在爲我的公司(社會)開發了一個小程序,它允許管理工人的工時,管理建築工地(工程)(加法,諮詢,修改)以及作爲WPF中的建築網站(作品)和人員管理的一個分析(有關信息,這是我在WPf中的第一個應用程序,迄今爲止我總是在WinForms中進行開發)。自datagrid更新bdd WPF
應用程序快要結束了,但是我遇到了一個修改施工現場(工作)的小問題。
我給出一些解釋:
我負載(充電)DataGrid中的數據集我的表施工現場(工作),與我希望能夠修改列的方式。
我的DataGrid的XAML代碼:
<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Height="373" Margin="0,47,0,0" VerticalAlignment="Top" Width="774" AutoGenerateColumns="False" ItemsSource="{Binding Path=LoadDataBinding}" CanUserResizeRows="False" TextBlock.TextAlignment="Center" IsReadOnly="False" CellEditEnding="dataGrid_CellEditEnding" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=numero}" Header="Numéro" IsReadOnly="True" TextBlock.TextAlignment="Center"/>
<DataGridTextColumn Binding="{Binding Path=responsable}" Header="Nom du responsable" IsReadOnly="True" TextBlock.TextAlignment="Center"/>
<DataGridTextColumn Binding="{Binding Path=description}" Header="Nom du chantier" IsReadOnly="True" TextBlock.TextAlignment="Center" />
<DataGridTextColumn Binding="{Binding Path=zone}" Header="Zone" IsReadOnly="False" TextBlock.TextAlignment="Center" />
</DataGrid.Columns>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
因此我賓得好,好把「IsReadOnly =‘假’接受修改
這裏是代碼C#來填補Datagrid的:
public void selection_chantier(object sender, RoutedEventArgs e)
{
dataGrid.DataContext = trait.lire_chantier_par_numero(c_numero_chantier.SelectedItem.ToString());
}
public DataSet lire_chantier_par_numero(string numero)
{
DataSet val = mbdd.table_lire("SELECT numero,responsable,description,zone FROM chantier WHERE numero = '"+numero+"'");
return val;
}
public DataSet table_lire(string requete)
{
try
{
cn = new MySqlConnection(); //Création d'un nouvel objet cn
cn.ConnectionString = con_Base; //Requête de connexion
cn.Open();
da = new MySqlDataAdapter(requete, cn); //On crée un nouvel objet da qui contiendra la requete et la connection
ds = new DataSet(); //On crée un nouvel objet ds
da.Fill(ds,"LoadDataBinding"); //On ajoute da dans le Dataset
cn.Close(); //On se déconnecte de la mbdd
}
catch (MySqlException mySqlException)
{
MySqlException ex = mySqlException;
System.Windows.MessageBox.Show("Erreur suivante " + ex + " ");
{ return null; }
}
return ds; //On retourne le Dataset
}
因此,我的問題是下面的一個,怎麼會是,在目前或修改我的DataGrid的單元格中的修改記錄在我的BDD?
我知道如何用WinForm的DataGridView做的東西,但我幹。我做了論壇的參觀,問了Google(我最好的朋友,當我有問題時))向MSDN諮詢,但顯然我錯過了一些東西。
編輯:細胞的修改我用的事件:CellEditEnding
private void dataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
trait.MajDataUtilisateur(ds);
}
public void MajDataUtilisateur(DataSet ds)
{
mbdd.TableMaj(ds);
}
public bool TableMaj(DataSet ds)
{
try
{
combuilder = new MySqlCommandBuilder(da); //création du combuilder et indication du connecteur de données
da.Fill(ds);
da.Update(ds,"LoadDataBinding"); //on envoie le dataset ds vers le connecteur de données
combuilder.Dispose(); //libération des ressources
return true;
}
catch (MySqlException mySqlException)
{
MySqlException ex = mySqlException;
//MessageBox.Show("Erreur suivante " + ex + " ");
System.Windows.MessageBox.Show("Erreur suivante " + ex + " ");
return false;
}
}