我是论坛的新人, 我在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()。
感谢您的帮助。我继续搜索。
答案 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
另请注意,item
,id_type
和nom_type
应为couleur_type
类的公共属性。