почему датагридвью не обновляется? - PullRequest
5 голосов
/ 05 ноября 2010

вот что происходит после того, как я нажимаю кнопку:

    dataGridView1.DataSource = ConnectandReadList(some_query);
    dataGridView1.Refresh();

обратите внимание, что я делаю это с другим элементом управления, называемым chart1, и он отлично работает с ним, он заполняет его новым запрашиваемымданные, но datagridview просто остается прежним

первая попытка успешна.

однако, когда я нажимаю второй раз, отображается то же самое!

любойзнаете, правильно ли я обновляю сетку данных?

Ответы [ 8 ]

10 голосов
/ 24 января 2013

Небольшая разница здесь с @Fake, но вызов Refresh() не будет работать, так как вызов этого только для dataGridView

"Вынуждает элемент управления аннулировать свою клиентскую область и немедленно перерисовывать себя и любого дочернего элемента.controls. "

Поскольку этот метод относится к любому элементу управления, а не к обновлению данных, относящихся к объекту.См. здесь (методы DataGridView) и прокрутите вниз до «Обновить», и вы увидите ссылку, указывающую на метод Control.Refresh

Вы хотите что-то подобное;

BindingSource bs = new BindingSource(); 
bs.DataSource = ConnectandReadList(some_query);
dataGridView1.DataSource = bs;
bs.ResetBindings(false)

и тогда вы можете просто позвонить ResetBindings() на bs (Ваш BindingSource);

BindingSource bs = new BindingSource(); 
private refreshData()
{
    bs.ResetBindings(false)
}
1 голос
/ 11 мая 2018

Эта строка кода загружает данные в таблицу wMP_EXPORTDataSet.DEST_AX_PRICEDISCADMTRANSENTITY. Вы можете переместить или удалить его по мере необходимости.

this.dEST_AX_PRICEDISCADMTRANSENTITYTableAdapter.Fill(this.wMP_EXPORTDataSet.DEST_AX_PRICEDISCADMTRANSENTITY);
1 голос
/ 05 ноября 2010

попробуйте это?

dataGridView1.DataSource = null;
dataGridView1.DataSource = ConnectandReadList(some_query);
dataGridView1.Refresh();
1 голос
/ 05 ноября 2010

DataGridView устанавливает привязки при первом назначении источника данных. Проблема заключается в том, что последующие назначения источника данных, если назначения имеют структуру, отличную от первоначального назначения, завершатся ошибкой, поскольку привязки теперь «выключены»

Вам необходимо сбросить DataGridView , таким образом, , чтобы данные были связаны с новым. (Ссылка для VB, но вам просто нужно знать методы для вызова. Даже копирование / вставка было бы излишним.)

0 голосов
/ 07 марта 2014

На самом деле проблема здесь в том, что ваш TableAdapter не обновляется.Я использовал этот код после редактирования таблицы (mydatabase.tbl), чтобы обновить его:

            tblTableAdapter.Fill(mydatabaseDataSet.tbl);
            dataGridView1.DataSource = tblBindingSource;
            dataGridView1.Update();
0 голосов
/ 05 ноября 2010

Вы можете сделать так, как предложил @cycl, вы также можете использовать BindingSource, который, я считаю, является рекомендуемым методом Microsoft.

BindingSource bs = new BindingSource(); 
bs.DataSource = ConnectandReadList(some_query);
dataGridView1.DataSource = bs;
dataGridView1.Refresh;
0 голосов
/ 05 ноября 2010

Вы пытались звонить EndEdit() до Refresh()?

0 голосов
/ 05 ноября 2010

Вы инициализируете источник данных в первый раз в if(!Page.IsPostback)

Это может быть сброс источника данных при каждой обратной передаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...