在我的应用程序中,我使用了 visual studio 2012,MSSQL server 2012,wpf 和 linq 。在那里,我必须使用数据库中的数据填充 datagrid 。我的 datagrid 如下所示。
<DataGrid HorizontalAlignment="Left" Height="189" Margin="10,10,0,0" VerticalAlignment="Top" Width="351" Name="StudentGrid" SelectionChanged="StudentGrid_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="Student ID" Binding="{Binding Path=Student.StudentId}"/>
<DataGridTextColumn Header="First Name" Binding="{Binding Path=Student.FirstName}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding Path=Student.LastName}"/>
<DataGridTextColumn Header="Gender" Binding="{Binding Path=Student.Gender}"/>
</DataGrid.Columns>
</DataGrid>
我的寡妇加载方法如下。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
SchoolDataDataContext con = new SchoolDataDataContext();
List<Student> students = (from s in con.Students
select s).ToList<Student>();
StudentGrid.ItemsSource = students;
}
但是当程序执行时,尽管数据库中的student表包含数据,但datagrid并不显示单个数据。
我该如何解决这个问题。
好的,我改变了数据网格,如下所述,答案如下,但没有任何变化。
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="191" Margin="23,24,0,0" VerticalAlignment="Top" Width="447" Name="StudentGrid" >
<DataGrid.Columns>
<DataGridTextColumn Header="Student ID" Binding="{Binding Path=StudentId}"/>
<DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding Path=LastName}"/>
<DataGridTextColumn Header="Gender" Binding="{Binding Path=Gender}"/>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:2)
您应该使用 ItemsSource =&#34; {Binding}&#34; 和 AutoGenerateColumns =&#34; False&#34;
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="189" Margin="10,10,0,0" VerticalAlignment="Top" Width="351" Name="StudentGrid" SelectionChanged="StudentGrid_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="Student ID" Binding="{Binding Path=Student.StudentId}"/>
<DataGridTextColumn Header="First Name" Binding="{Binding Path=Student.FirstName}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding Path=Student.LastName}"/>
<DataGridTextColumn Header="Gender" Binding="{Binding Path=Student.Gender}"/>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:1)
如果你已经设置了DataContext,那么只使用ItemsSource = {Binding}。
这看起来可能是由两件事中的一件造成的。
<DataGridTextColumn Header="Student ID" Binding="{Binding Path=StudentId}"/>
<DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding Path=LastName}"/>
<DataGridTextColumn Header="Gender" Binding="{Binding Path=Gender}"/>
如果您已将ItemsSource设置为所需的Generic列表,则只需将Path设置为成员名称,而不是Object名称。喜欢上面..
检查学生班级中的成员是否公开,他们需要这样才能使其工作。
并最后检查您的列表是否为空,以便您知道这不是问题。
答案 2 :(得分:0)
您可以尝试在数据网格的xaml代码中使用ItemsSource="{Binding}"
。
答案 3 :(得分:0)