在Datagrid中显示数据 - > XAML(简单) - C#

时间:2017-04-06 07:40:40

标签: c# wpf xaml datagrid

我是论坛的新人,    我在datagrid中显示有一点问题。 我尝试过在网上找到的所有解决方案。请帮帮我。

我的观点:XAML view

XAML中的我的代码:

 <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" ItemsSource="{Binding type}" HorizontalAlignment="Left" Height="369" Margin="1,0,0,0" VerticalAlignment="Top" Width="991" SelectionMode="Single" IsReadOnly="True" Grid.ColumnSpan="2">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Id" Width="60" Binding="{Binding id_type}"/>
            <DataGridTextColumn Header="Nom" Width="200" Binding="{Binding nom_type}"/>
            <DataGridTextColumn Header="Couleur" Width="200" Binding="{Binding couleur_type}"/>
        </DataGrid.Columns>
    </DataGrid>

我在ADOType中的代码:

public static List<TypeC> readAll()
    {
        try
        {

            List<TypeC> lesTypes = new List<TypeC>();
            MySqlDataReader reader; // Contiendra les données

            open();
            MySqlCommand requete = new MySqlCommand("SELECT * FROM type");
            requete.Connection = conn;
            reader = requete.ExecuteReader(); // Exécution de la requête SQL
                                              // reader.Read(); // lecture du resultat
                                              // lesEntreprise = new Entreprise((String)reader["siret"]);
            while (reader.Read())
            {
                lesTypes.Add(new TypeC((int)reader["id_type"], reader["nom_type"].ToString(), reader["couleur_type"].ToString()));
            }
            reader.Close();
            close();
            return lesTypes;

        }
        catch (Exception ex)
        {
            // Affiche des erreurs
            Console.WriteLine(ex.Message);
            close();
            return null;
        }

    }

我使用readAll(),我想在我的DataGrid中显示readAll()。

感谢您的帮助。我继续搜索。

2 个答案:

答案 0 :(得分:1)

您需要使用Datagrid的itemssource属性中的readAll()方法分配您正在填充的相同集合。

按以下方式更改您的代码:

<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" ItemsSource="{Binding lesTypes}" HorizontalAlignment="Left" Height="369" Margin="1,0,0,0" VerticalAlignment="Top" Width="991" SelectionMode="Single" IsReadOnly="True" Grid.ColumnSpan="2">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Id" Width="60" Binding="{Binding id_type}"/>
            <DataGridTextColumn Header="Nom" Width="200" Binding="{Binding nom_type}"/>
            <DataGridTextColumn Header="Couleur" Width="200" Binding="{Binding couleur_type}"/>
        </DataGrid.Columns>
    </DataGrid>

另外,将List<TypeC>更改为ObservableCollection<TypeC>。 Observable Collection实现了INotifyPropertyChanged接口,它将反映您在UI上的集合中所做的任何更改

答案 1 :(得分:0)

你忘了用readAll()方法的结果告诉我们你在做什么。

您应该将视图模型的type属性设置为:

type = readAll();

...或ItemsSource的{​​{1}}属性,具体取决于方法和DataGrid属性的定义位置以及是否使用MVVM设计模式:

type

如果在视图的构造函数返回后设置dataGrid.ItemsSource = readAll(); 属性,则视图模型类应实现type接口并在setter的setter中引发INotifyPropertyChanged事件。 PropertyChanged财产:https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx

另请注意,itemid_typenom_type应为couleur_type类的公共属性