1 голос
 
2028 просмотров
3.01.2018 / 00:06  Витаминыч

Почему не заполняется DataGridView из List

https://annimon.com/qa/232
С того раза я пересмотрел решение, упростив все и задействовам DGW напрямую (изменение полей, например, вместо отдельной формы редактирования). Тот вопрос, к тому же, не получилось решить.

В общем, снова привязываю через DataSource свой лист, в отладке (Debug.Writeline) видно, что данные есть (даже без BindingSource), но вот в полях грида ничего не появляется. Изначально создал колонки в редакторе, и далее программно добавлял строки, но то для проверки, надо, чтобы привязка была (метод Refresh() поможет). Сейчас привязка как бы работает - появляется столько строк, сколько и элементов в листе, но значениями не заполняются... В чем может быть дело?

Да, добавлю: гуглил, вариант с DataPropertyName для колонки не работает да и зачем, если я колонки программно не создаю и этого не требуется.
И так же, вариант с
  1. var source = new BindingSource();
  2. source.DataSource = lr;
  3. dataGridView1.DataSource = source;
тоже не работает. К тому же, как выше написал, все привязывается напрямую.
:dum:
Ответы
 
1 голос
 
# 4.01.2018 / 18:28  Витаминыч
Окончательное решение
1. Проверить, действительно ли у вас свойства, а не поля.
https://pp.userapi.com/c841427/v841427709/52c79/PjUIvOg5Igs.jpg2. Если колонки задаются через конструктор, то там же и изменить свойство DataPropertyName, вручную вписав названия полей. Т.к. ранее у меня были поля, а не свойства, то и DataPropertyName не работал.
https://pp.userapi.com/c841427/v841427709/52c80/AhrBjWKfJ_Y.jpg
  1. // ...
  2. List<Record> lr = new List<Record>();
  3. // ...
  4. public Form1() {
  5.             InitializeComponent();
  6.             // ...
  7.             dataGridView1.AutoGenerateColumns = false;
  8. }
  9.  
  10. private void Method1() {
  11.             dataGridView1.DataSource = lr;
  12. }

Соответственно, если вы в коде создаете колонки, то не забывайте сразу присвоить название свойства класса.

:)
Изм. Витаминыч от 4.01.2018 / 18:32
4.01.2018 / 22:44  Argentmize
Одна глупая ошибка, а сколько проблем 😃
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt