Заполнение DataGridView с использованием свойства DataGridView.DataSource и BindingSource - PullRequest
1 голос
/ 14 января 2011

Следующие два фрагмента кода заполняют 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
            });
        }

Любые идеи приветствуются,Спасибо.

1 Ответ

1 голос
/ 14 января 2011

Трудно сказать, не видя 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; } } 
...