1

次の 2 つのコード スニペットは、後で DataGridView.DataSource に割り当てられる BindingSource を設定します。

具体的なクラスの 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
            });
        }

どんなアイデアでも大歓迎です。ありがとう。

4

1 に答える 1

1

見ずに見分けるのは難しいですQuotesTool.LineItem、デフォルトでは、各メンバーは便利です。

  • 公開する必要があります
  • プロパティである必要があります(フィールドではありません)
  • マークしてはいけません[Browsable(false)]

ここでの問題は通常、最初の2つのうちの1つです。たとえば、これらはいずれもデフォルトでは機能しません。

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; } } 
于 2011-01-14T14:28:22.410 に答える