Обновить представление данных в приложении Windows Form - PullRequest
1 голос
/ 19 августа 2010

У меня есть форма с datagridview и списком, подобным этому:

private void Form1_Load(object sender, EventArgs e)
        {
            List<Person> list = new List<Person>();
            list.Add(new Person("A", "An Giang"));
            list.Add(new Person("B", "TP HCM"));
            list.Add(new Person("C", "Tiền Giang"));
            list.Add(new Person("D", "Cần Thơ"));

            this.dataGridView1.DataSource = list;

            list.Add(new Person("E", "Bạc Liêu")); // --> changed

            this.dataGridView1.EndEdit();
            this.dataGridView1.Refresh();
            this.Refresh();
            this.dataGridView1.Parent.Refresh();
        }

Моя проблема в том, что в datagridview не отображалась новая строка, хотя его источник данных изменился. Я пытаюсь обновить сетку данных, но она не работает.

Ответы [ 4 ]

3 голосов
/ 19 августа 2010

Извлечение BindingList<T>, этот список поддерживает привязку данных и, как таковой, запускает события при изменении коллекции.

1 голос
/ 22 июля 2012

Используйте это, это сработало для меня:

qTableAdapter.Fill (_11DataSet.q);

1 голос
/ 19 августа 2010

Быстрый взлом показывает, что он будет привязан, как вы ожидаете, с вашим List<t>:

...
list.Add(new Person("E", "Bạc Liêu")); // --> changed

dataGridView1.DataSource = null;
dataGridView1.DataSource = list;

Подумайте о рефакторинге, чтобы использовать BindingList<Person> вместо List<Person>, который будет работать так, как вы ожидаете, и вам не потребуется обновлять код. Внедрите это изменение, и весь код после вставки Person E. может быть удален.

0 голосов
/ 19 августа 2010

Ответь на мой вопрос. Я попытался использовать BindingList<Person> вместо List<Person>, и проблема решена.

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