2016-04-28 4 views
1

ich habe zwei DataGridConcour und Epruve ich will Epreuve Shows machen, wenn eine Reihe von Concour ausgewählt ist .. mein Problem ist, wie der Zugang zu den DataGridEpreuve, um es zu füllen von MySQL.Zugriff auf Datagrid in anderen DataGrid.RowDetailsTemplate

Das ist, was ich

XAML

<DataGrid x:Name="Concours" IsReadOnly="True" AutoGenerateColumns="True" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserResizeRows="False" CanUserSortColumns="True" SelectionChanged="Concour_SelectionChanged" HorizontalAlignment="Left" Margin="288,48,0,0" VerticalAlignment="Top" Height="345" Width="652"> 
     <DataGrid.RowDetailsTemplate> 
      <DataTemplate> 
       <DataGrid x:Name="Epreuve" IsReadOnly="False" CanUserAddRows="True" CanUserDeleteRows="True" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserSortColumns="True" CanUserResizeRows="False" RowDetailsVisibilityMode="VisibleWhenSelected"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Header="Code" Binding="{Binding Code}"/> 
         <DataGridTextColumn Header="Désignation" Binding="{Binding Designation}"/> 
         <DataGridTextColumn Header="Coefficient" Binding="{Binding Coef}"/> 
         <DataGridTextColumn Header="Date" Binding="{Binding Date}"/> 
        </DataGrid.Columns> 
       </DataGrid> 
      </DataTemplate> 
     </DataGrid.RowDetailsTemplate> 

CS versucht

private void Concour_SelectionChanged (object sender, EventArgs e) 
    { 
     //Get the First Cell Value 
     DataTable dt = new DataTable(); 
     dt = ((DataView)Concours.ItemsSource).ToTable(); 
     List<String> L = new List<string>(); 
     foreach (DataRow row in dt.Rows) 
     { 
      L.Add((String)row[0]); 
     } 
     int row_number = Concours.SelectedIndex; 
     //Connect To DataBase (gestion_concour) 
     MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder(); 
     builder.Server = "127.0.0.1"; 
     builder.UserID = "root"; 
     builder.Password = "root"; 
     builder.Database = "gestion_concour"; 
     MySqlConnection connection = new MySqlConnection(builder.ToString()); 
     connection.Open(); 
     //Fill Epreuve 
     String q = "SELECT * FROM gestion_Concour.concour WHERE Code = @Code"; 
     MySqlCommand cmd = new MySqlCommand(q, connection); 
     cmd.CommandText = q; 
     cmd.Parameters.AddWithValue("@Code", L[row_number]); 
     cmd.ExecuteNonQuery(); 
     MySqlDataAdapter DA = new MySqlDataAdapter(cmd); 
     DataTable DT = new DataTable("Epreuve"); 
     DA.Fill(DT); 
     Epreuve.ItemSource = DT.DefaultView; 
     DA.Update(DT); 
     connection.Close(); 
    } 

und ich habe diesen Fehler

Der Name 'Epreuve' existiert nicht im aktuellen Kontext

+0

Ich glaube, ich somthing zu tun haben, wie Itemssource = " {Binding Epreuve} "das hat nicht funktioniert .. aber ich denke, einige Änderungen und es wird –

Antwort

1

änderte ich die Concour_SelectionChnged und verwenden Concour_LoadRowDetails

CS

public void Concour_LoadRowDetails (object sender, DataGridRowDetailsEventArgs e) 
    { 
     Eprv = e.DetailsElement.FindName("Epreuve") as DataGrid; 
     MessageBox.Show("Epreuve Loaded"); 
     DataTable dt = new DataTable(); 
     dt = ((DataView)Concours.ItemsSource).ToTable(); 
     List<String> L = new List<string>(); 
     foreach (DataRow row in dt.Rows) 
     { 
      L.Add((String)row[0]); 
     } 
     int row_number = Concours.SelectedIndex; 
     //Connect To DataBase (gestion_concour) 
     MessageBox.Show(L[row_number]); 
     MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder(); 
     builder.Server = "127.0.0.1"; 
     builder.UserID = "root"; 
     builder.Password = "root"; 
     builder.Database = "gestion_concour"; 
     MySqlConnection connection = new MySqlConnection(builder.ToString()); 
     connection.Open(); 
     //Fill Epreuve 
     String q = "SELECT * FROM gestion_Concour.Epreuve WHERE Concour_Code = @Code"; 
     MySqlCommand cmd = new MySqlCommand(q, connection); 
     cmd.CommandText = q; 
     cmd.Parameters.AddWithValue("@Code", L[row_number]); 
     cmd.ExecuteNonQuery(); 
     MySqlDataAdapter DA = new MySqlDataAdapter(cmd); 
     DataTable DS = new DataTable(); 
     DA.Fill(DS); 
     Eprv.ItemsSource = DS.DefaultView; 
     DA.Update(DS); 
     connection.Close(); 
    } 
Verwandte Themen