Как обновлять таблицу в DataGridView?
такая вот проблема: мне требуется обновить таблицу по кнопки. Сама таблица считается репликой таблицы с базы данных. Код ниже:
public static void Table_Fill(string name, string sql) // метод по заполнению таблиц
{
if (ds.Tables[name] !=null)
ds.Tables[name].Clear();
SqlDataAdapter dat = new SqlDataAdapter(sql, conn);
dat.Fill(ds,name);
conn.Close();
}
Connection.Table_Fill("Номер", "select Nomer.id_nomer as 'Номер комнаты', Category.name as 'Название категории', " +
"Category.description as 'Описание', Category.price_day as 'Стоимость за сутки', Category.kol_room as 'Количество комнат' " +
"from Nomer inner join Category on Nomer.id_category=Category.id_category where status='свободен';");
Обычно я обновлял таблицы по индексу, который брал по нажатию на нужную строку в таблице. Код ниже:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow selectedRow = dataGridView1.Rows[e.RowIndex];
id_contract = selectedRow.Cells["Номер договора"].Value.ToString();
n = e.RowIndex;
id_nomer = selectedRow.Cells["Номер комнаты"].Value.ToString();
}
}
private void button1_Click(object sender, EventArgs e)
{
string sql = $"DELETE FROM Contract where id_contract ={id_contract}";
string sql1 = $"UPDATE Nomer SET status='свободен' WHERE id_nomer={id_nomer}";
Connection.Modification_Execute(sql);
Connection.Modification_Execute(sql1);
try
{
Connection.ds.Tables["Договор"].Rows.RemoveAt(n);
Connection.ds.Tables["Номер"].Constraints.Clear();
Connection.Table_Fill("Номер", "select Nomer.id_nomer as 'Номер комнаты', Category.name as 'Название категории', " +
"Category.description as 'Описание', Category.price_day as 'Стоимость за сутки', Category.kol_room as 'Количество комнат' " +
"from Nomer inner join Category on Nomer.id_category=Category.id_category where status='свободен';");
MessageBox.Show("Договор успешно удален","Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Кто может подсказать , как сделать, чтобы не приходилось лишний раз стирать таблицу и по новому запросу ее заполнять. Я раньше делал так, прошу прощения за скрин, код не остался:
Я бы его использовал, только вот не знаю как с ним работать когда, у меня меняется только один столбец (status). Может кто подсказать?