Обновление представления таблицы данных с обновленными данными - PullRequest
3 голосов
/ 14 января 2010

У меня есть датагридвью. Я читаю XML-файл и привязываю данные к сетке. Я изменяю XML и сохраняю его в другой форме. Поэтому я перечитал XML-файл и привязал его к сетке. Datatable получает обновленные значения. Но сетка не обновляется, пока я не закрою и снова не открою приложение. Как это сделать?

Спасибо.

С уважением, Raghavendra

# 1

Есть ли Databind () или Rebind () для DataGridView? Я установил источник данных так -

dvMoviesList.DataSource = dtMovies;

Если я добавлю новую строку в таблицу dtMovies и снова установлю источник данных, это будет отражено. Но если я отредактирую значения любой из существующих строк и переназначу источник данных, он не будет отражен, пока я не закрою и снова не открою приложение. Есть идеи?

Спасибо.

Ответы [ 5 ]

9 голосов
/ 19 февраля 2010

Я думаю, вам нужно поместить BindingSource между DataGridView и DataTable.

DataGridView _dgv = new DataGridView();
BindingSource _bs = new BindingSource();
DataTable _dt = new DataTable();
.
.
.
_dgv.DataSource = _bs;
_bs.DataSource = _dt;

Теперь, когда обновляется _dt, BindingSource должен заботиться об обновлении DataGridView, и вам не нужно беспокоиться о сбросе какого-либо свойства DataSource. Свойства DataSource могут быть установлены в методе InitializeComponent() (конструктор), конструкторе Form или обработчике события Form.Load.

1 голос
/ 22 февраля 2010

Я уверен, что то, что я собираюсь предложить, не является правильным способом, но я столкнулся с той же проблемой и, будучи главным разработчиком ASP.NET и не проделав большой работы в winforms, единственное решение, которое я нашел, это установить источник данныхв NULL, затем перепривязать данные.

Пример: this.dataGridView.DataSource = null;this.dataGridView.DataSource = myDataSource;

Попытка проверить решение, рекомендованное Nasser, как решение, которое у меня есть, просто кажется неправильным, даже если оно работает.

0 голосов
/ 12 июля 2012

К вашему сведению: я заметил разницу между установкой DataSet в DataSet и DataTable. Установка его в DataSet не приводит к обновлению сетки, даже если она содержит только одну таблицу. Однако при установке его в DataTable внутри DataSet сетка обновляется правильно.

Кстати, я устанавливал свойство DataSource в промежуточном объекте BindingSource, который был связан с DataGridView, а не в самом DataGridView. Не уверен, что это имеет значение.

Это может быть только косвенно связано с вопросом, поскольку источником данных в вопросе был XML, а не DataSet. Тем не менее, другие пользователи, имеющие мою проблему, вероятно, столкнутся с этой темой (как и я), поэтому я все равно опубликовал это.

0 голосов
/ 22 февраля 2010

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

ArrayList list = new ArrayList();
list = YourXMLContent.GetItems(); 
GridView1.datasource = list;  // you can use you DataTable instead of list
GridView1.update();
Gridview1.invalidate();

это все.

0 голосов
/ 09 февраля 2010

Вы пробовали это?

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