2011-01-14 71 views
1

以下两个代码片段将填充BindingSource,稍后将其分配给DataGridView.DataSource的 。使用DataGridView.DataSource属性填充DataGridView属性和BindingSource

当使用具体类QuotesTool.LineItem(第一个片段)网格不显示适当的数据:

的BindingSource lineList =新的BindingSource();

 foreach (XElement y in _lines.Elements()) 
     { 
      lineList.Add(new QuotesTool.LineItem(
       y.Element("Vendor").Value, 
       y.Element("Model").Value, 
       y.Element("Selling_Unit").Value, 
       y.Element("Net_Price").Value, 
       y.Element("Spec").Value 
         )); 
     } 

但是,如果匿名类型使用网格显示数据行:

 foreach (XElement y in _lines.Elements()) 
     { 
      lineList.Add(
       new { 
       vendor = y.Element("Vendor").Value, 
       Model = y.Element("Model").Value, 
       UOM = y.Element("Selling_Unit").Value, 
       Price = y.Element("Net_Price").Value, 
       Description = y.Element("Spec").Value 
      }); 
     } 

任何想法,将不胜感激。谢谢。

回答

1

很难说没有看到QuotesTool.LineItem,但默认是有用的,每个成员:

  • 必须是公共
  • 必须是一个属性(而不是字段)
  • 切不可标[Browsable(false)]

这里的问题是通常杉杉之一两个。例如,这些都不将默认工作:

public string Vendor; 

internal string Vendor {get;set;} 

[Browsable(false)] public string Vendor {get;set;} 

但这会:

public string Vendor {get;set;} 

注意,它并没有成为一个自动实现的属性,也不需要是可写的:

private readonly string vendor; 
public string Vendor { get { return vendor; } } 
+0

谢谢Marc。将类字段更改为属性取得了诀窍! – user575719 2011-01-14 14:38:26