2014-03-31 33 views
0

在我的應用程序中我使用了visual studio 2012,MSSQL server 2012,wpflinq。在那裏,我必須使用來自數據庫的數據填充數據網格。我的datagrid如下。數據網格不顯示C#中的數據wpf應用程序

<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; 
    } 

但是,當程序執行時,雖然數據庫中的學生表包含數據,但datagrid不顯示單個數據。

enter image description here

我怎麼能解決這個問題。

好吧我改變了數據網格,如下所述的答案如下,但沒有任何變化。

<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> 
+1

你有學生內的物品嗎? – Sajeetharan

+0

是的。我輸入了一些數據。我還開發了添加學生功能。所以表中包含數據.... –

+2

不是表格,你的學生列表在調試 – Sajeetharan

回答

2

您應該使用的ItemsSource = 「{結合}」的AutoGenerateColumns = 「假」

<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> 
0

你可以嘗試在數據網格中的XAML代碼使用ItemsSource="{Binding}"

0

你必須分配相同的datacontext到網格,您使用的是IE SchoolDataDataContext首先,那麼你應該設置的項目源(另外,還要確保你在你的ItemSource記錄)

這是一個完整的指南

Guide1 Guide2

1

僅使用的ItemsSource = {}綁定,如果你已經設置了DataContext的,你沒有。

看起來這可能是由2件事中的1件引起的。

<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設置爲你想要的泛型列表,你只需要在路徑設置爲成員名稱,而不是對象名稱。像以上一樣..

檢查您的學生課程中的成員是否公開,他們需要爲了這個工作。

並最後檢查您的清單是否爲空,以便您知道這不是問題。

相關問題