во-первых, проблема с удалением может быть связана с тем, что в других таблицах есть ссылки на удаляемые записи и в таком случае нужно настроит каскадное удаление. Насчёт обновления... я бы сделал обновление через SQL-запрос. UPDATE. Просто берёте новые значения из ячеек вашей таблицы, вставляете их в строку запроса, и всё.
string sql = "UPDATE AGR SET SHORTNAME_AGR=\'" + dataGridView1.Rows[lastSelectedRowIndex].Cells[0].Value.ToString() + "\', NAME_AGR=\'" + dataGridView1.Rows[lastSelectedRowIndex].Cells[1].Value.ToString()+"\' " +
"WHERE ID_AGR=(select AGR.ID_AGR from AGR where AGR.SHORTNAME_AGR=\'"+lastSelectedRow+"\')";
где lastSelectedRowIndex - выделенная пользователем строка. lastSelectedRowI - последнее значение, идентифицирующее запись (у меня это короткое имя агрегата).