2012-08-06 114 views
0

我有列表基于类(id,名称,代码,价格)和即时尝试将该值添加到数据网格。问题在于,数据网格仍然是空的,我的意思是看起来像: enter image description here空DataGrid WPF

XAML

<DataGrid AutoGenerateColumns="False" Height="275" HorizontalAlignment="Left" Margin="337,51,0,0" Name="dataGridProducts" VerticalAlignment="Top" Width="403" Foreground="#FF803E3E"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="ID" Width="30" /> 
     <DataGridTextColumn Header="Nazwa" Width="200" /> 
     <DataGridTextColumn Header="Kod" Width="120" /> 
     <DataGridTextColumn Header="Cena" Width="100" /> 
    </DataGrid.Columns> 
</DataGrid> 

代码背后:

private void categoryListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    SqlConnection SqlConn = new SqlConnect().ConnectToSql(); 
    using (SqlConn) 
    { 
     SqlConn.Open(); 
     SqlCommand fillCategories = new SqlCommand("...", SqlConn); 
     SqlDataReader rdr1; 
     rdr1 = fillCategories.ExecuteReader(); 
     while (rdr1.Read()) 
     { 
      Products p = new Products(rdr1.GetInt32(rdr1.GetOrdinal("ID")), rdr1.GetString(rdr1.GetOrdinal("ProductName")), rdr1.GetString(rdr1.GetOrdinal("Barcode")), rdr1.GetString(rdr1.GetOrdinal("Price"))); 
      completeProductList.Add(p); 
     } 
    } 
    dataGridProducts.ItemsSource = completeProductList; 
} 

是否有任何解决方案如何解决它?

+0

您至少需要分享您的xaml部分。类声明也会有帮助。 – Maverik 2012-08-06 10:50:04

+0

哦,该死的我在这里输入了xaml代码,但看起来很糟糕。 这里是xaml和class的链接: http://pastebin.com/RD3YySDf – user13657 2012-08-06 10:54:03

+1

您是否使用MVVM模式?我的代码猜测是你正在尝试自动生成列,但是你在xaml中定义的列也没有绑定,因此不能显示任何数据。 – Maverik 2012-08-06 11:08:31

回答

4

必须在类数据网格项目源的列绑定到一个值

例子: 如果datagrid.ItemsSource是3列的表格:

- ID 
    - Name 
    - Address 

您必须绑定每个将数据网格的列添加到表格的列中:

... 
<DataGridTextColumn Header="ID" Binding="{Binding Path=ID}" Width="Auto" /> 
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" Width="Auto" /> 
<DataGridTextColumn Header="Address" Binding="{Binding Path=Address}" Width="Auto" /> 
... 

然后您会看到该表的绑定值。