使用 DataGridView.DataSource 属性和 BindingSource 填充 DataGridView

发布于 2024-10-12 04:53:00 字数 1045 浏览 4 评论 0原文

以下两个代码片段填充 BindingSource,稍后将其分配给 DataGridView.DataSource。

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

BindingSource lineList = new 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
            });
        }

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

The following two code snippets populate a BindingSource which is later assigned to
a DataGridView.DataSource.

When the concrete class QuotesTool.LineItem is used (first snippet) the grid DOES NOT display the appropriate data:

BindingSource lineList = new 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
                       ));
        }

But, if an anonymous type is used the grid displays data OK:

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

Any ideas would be appreciated. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神妖 2024-10-19 04:53:00

如果没有看到 QuotesTool.LineItem 很难判断,但是默认情况下很有用,每个成员:

  • 必须是公共的
  • 必须是属性(不是字段)
  • 不得标记 < code>[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; } } 

Hard to tell without seeing QuotesTool.LineItem, but by default to be useful, each member:

  • must be public
  • must be a property (not a field)
  • must not be marked [Browsable(false)]

The issue here is usually one of the first two. For example, none of these will work by default:

public string Vendor;

internal string Vendor {get;set;}

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

but this will:

public string Vendor {get;set;}

Note that it doesn't have to be an automatically implemented property, nor does it need to be writeable:

private readonly string vendor;
public string Vendor { get { return vendor; } } 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文