首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问其他DataGrid内部的DataGrid.RowDetailsTemplate

访问其他DataGrid内部的DataGrid.RowDetailsTemplate
EN

Stack Overflow用户
提问于 2016-04-28 00:08:55
回答 1查看 144关注 0票数 1

我有两个DataGrid ConcourEpruve,我想在选择Concour行时使Epreuve显示。我的问题是如何访问DataGrid Epreuve以从MySQL中填充它。

这就是我试过的

XAML

代码语言:javascript
复制
<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

代码语言:javascript
复制
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‘在当前上下文中不存在

EN

回答 1

Stack Overflow用户

发布于 2016-04-28 14:24:09

我更改了Concour_SelectionChnged并使用了Concour_LoadRowDetails

CS

代码语言:javascript
复制
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();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36903040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档