我有两个DataGrid Concour和Epruve,我想在选择Concour行时使Epreuve显示。我的问题是如何访问DataGrid Epreuve以从MySQL中填充它。
这就是我试过的
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
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();
}我得到了这个错误
名称'Epreuve‘在当前上下文中不存在
发布于 2016-04-28 14:24:09
我更改了Concour_SelectionChnged并使用了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();
}https://stackoverflow.com/questions/36903040
复制相似问题