как обновить ячейку в datagridview? - PullRequest
1 голос
/ 26 октября 2010

У меня есть datagridview, который подключается к моей базе данных (доступ)

если я останусь в любой ячейке и изменим значение, то увидим, что значение изменилось

но когда я делаю обновление, я вижу, что значение вернулось к исходному значению.

как я могу обновить эту ячейку (без запроса sql)

я связываю набор данных с сеткой данных следующим образом:

dsView = new DataSet();
            adp = new OleDbDataAdapter("SELECT * FROM Items", Conn);
            adp.Fill(dsView, "Items");
            this.dataGridView1.DataSource = dsView.Tables["Items"].DefaultView;
            adp.Dispose();

пожалуйста, я должен найти, как это сделать .....

Спасибо заранее

1 Ответ

4 голосов
/ 26 октября 2010

Если ваше представление данных подключено к базе данных, и вы не хотите использовать SQL, я могу предположить, что оно связано с источником данных.Если вы выполнили это через Visual Studio Designer, должны быть TableAdapter (если он автоматически сгенерирован, вероятно, называется YOURTABLENAMETableAdapter ) и BindingSource (если он автоматически сгенерирован, вероятно, называется YOURTABLENAMEBidingSource ).

Чтобы обновить базу данных, вам нужно вызвать BindingSource.EndEdit (), а затем TableAdapter.Update ().После того, как вы это сделали, вы можете обновить свои данные.

РЕДАКТИРОВАТЬ

Теперь, когда вы предоставили более подробную информацию, я могу дать вам лучший ответ.В моем предыдущем ответе я предполагал, что вы создали все вместе с конструктором, потому что вы не хотели использовать SQL для обновления.Очевидно, я был неправ.

Чтобы достичь того, что вы ищете, вы должны использовать класс OleDbCommandBuilder, который, с помощью команды SELECT, автоматически генерирует простую команду редактирования (insert /обновить / удалить) для вашей таблицы.

ниже приведен пример использования вашего кода:

dsView = new DataSet();
adp = new OleDbDataAdapter("SELECT * FROM Items", Conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adp);
adp.Fill(dsView, "Items");
this.dataGridView1.DataSource = dsView.Tables["Items"].DefaultView;
//adp.Dispose(); You should dispose you adp only when it is not loger needed (eg: after performing the update)

Теперь, после внесения изменений в данные, вы можете позвонить

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