DataGridView - добавление в DataSource не отражает изменения в элементе управления - PullRequest
1 голос
/ 14 сентября 2009

У меня есть DataGridView с его источником данных, установленным в список. Когда я добавляю в этот список, изменение не регистрируется DataGridView. Точный код для инициализации:

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN;
dataGridView1.AllowUserToAddRows = true;
dataGridView1.AllowUserToDeleteRows = true;
dataGridView1.AllowUserToOrderColumns = true;
dataGridView1.AllowUserToResizeColumns = true;
dataGridView1.AllowUserToResizeRows = false;

И точный код для обновления источника данных:

SimpleOfx.OFXBANKMSGSRSV1STMTTRNRSSTMTRSBANKTRANLISTSTMTTRN transaction = new SimpleOfx.OFXBANKMSGSRSV1STMTTRNRSSTMTRSBANKTRANLISTSTMTTRN();
document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN.Add(transaction);

Как вы, вероятно, можете сказать, имена классов были сгенерированы с использованием xsd.exe, SimpleOfx - это пространство имен сгенерированного класса, STMTTRN - это список, document - это экземпляр класса, который содержит десериализованный XML-файл, и m_statement это файл.

Есть идеи, что мне нужно сделать, чтобы элемент управления отражал изменения, внесенные в источник данных после его установки? Я попытался установить его снова, но это не работает. Я пробовал «обновить» и все другие методы, которые кажутся обнадеживающими, но они тоже не сработали. Заранее спасибо:)

РЕДАКТИРОВАТЬ: немного больше информации; Я могу взломать код и взглянуть как на мой элемент document, так и на свойство DataSource dataGridView1; оба они имеют правильное количество элементов, включая некоторые сконструированные по умолчанию в конце, но элемент управления по-прежнему не рисует эти дополнительные строки. Источник данных DataGridView, похоже, знает о новом содержимом списка, но не рисует их.

Ответы [ 2 ]

4 голосов
/ 14 сентября 2009

Я решил эту проблему, изменив STMTTRN из списка в BindingList - список, похоже, имеет очень странное поведение при использовании в качестве источника данных (см. Мой другой недавний вопрос, который решается таким же образом).

Это в сгенерированном коде, но я уже изменил его с массива на список, так что BindingList едва ли представляет собой дополнительную проблему:)

1 голос
/ 14 сентября 2009

Вам нужно будет выполнить повторную привязку после добавления в список источников данных, поэтому повторите:

dataGridView1.DataSource = document.m_statement.BANKMSGSRSV1.STMTTRNRS.STMTRS.BANKTRANLIST.STMTTRN;
...