Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6461
Последний выпуск: 19.06.2015

Не могу обновить gridview после обновления таблицы mysql

69K
18 мая 2013 года
Пелядь
9 / / 23.09.2011
Загружаю данные из базы в gridview

[CSHARP]DataSet dataset = new DataSet();
dataset = MysqlProvider.FillGrid();

BindingSource bindingSorce = new BindingSource();
bindingSorce.DataSource = dataset.Tables[0];

gridControl1.DataSource = bindingSorce;[/CSHARP]

[CSHARP] public static DataSet FillGrid()
{
MySqlConnection newConnection = new MySqlConnection(_connectionString);
try
{
DataSet dataset = new DataSet();
newConnection.Open();
if (newConnection.State.ToString() == "Open")
{
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = newConnection;
cmd.CommandText = "SELECT * FROM main";
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
adapter.Fill(dataset);
}
else
{
return null;
}
newConnection.Close();
return dataset;
}
catch { return null; }
}[/CSHARP]

До этого момента все проходит отлично и данные корректно отображаются в gridview

Далее предполагается, что пользователь меняет например содержимое какой-либо ячейки gridview и соответственно данные нужно сохранить обратно в базу. Использую для этого событие RowUpdated

[CSHARP] try
{
BindingSource bs = (BindingSource)gridView1.DataSource;
DataTable changes = ((DataTable)bs.DataSource).GetChanges();

if (changes != null)
{
MysqlProvider.UpdateGrid(changes);
((DataTable)((BindingSource)gridView1.DataSource).DataSource).AcceptChanges();
}

}
catch { }[/CSHARP]

[CSHARP] newConnection.Open();
if (newConnection.State.ToString() == "Open")
{
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = newConnection;
cmd.CommandText = "SELECT * FROM main";
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
MySqlCommandBuilder cmb = new MySqlCommandBuilder(adapter);
adapter.UpdateCommand = cmb.GetUpdateCommand();
adapter.Update(datatable);
}
else
{
return false;
}
newConnection.Close();
return true;[/CSHARP]


Этот код тоже выполнился и данные в базе обновились, но теперь невозможно обновить гридвью

[CSHARP]DataSet dataset = new DataSet();
dataset = MysqlProvider.FillGrid();

BindingSource bindingSorce = new BindingSource();
bindingSorce.DataSource = dataset.Tables[0];

gridControl1.DataSource = bindingSorce;[/CSHARP]

После вышепреведенного кода(точно такой же я использовал в самом начале) все содержимое гридвью вообще пропадает. Методом проб заметил, что если если событие Row_Updated не вызывалось, то все отлично работает. Даже достаточно закомментить строчку adapter.UpdateCommand = cmb.GetUpdateCommand(); в UpdateGrid() чтобы все заработало. Подскажите где может быть ошибка.

В крайнем случае буду признателен если покажите другой способ обновления базы через Datable, который не будет так сильно влиять на последующий события

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог