Не могу обновить gridview после обновления таблицы mysql
[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, который не будет так сильно влиять на последующий события