мой последний вопрос был закрыт, потому что он не был ясен, поэтому я попробую еще раз, потому что мне действительно нужна помощь для этого ...
Я использую Visual Studio 2010 с подключением OLEDB. Прямо сейчас я разрабатываю форму окна. Я заметил, что datagridview позволяет вам иметь режим редактирования / добавления / удаления, поэтому я хочу иметь возможность использовать его.
То, что я хочу сделать, это использовать событие cellcontentchanged, используемое для редактирования моей базы данных. Когда я изменяю содержимое и ухожу, меня спросят, хочу ли я изменить эту ячейку. Если я скажу да, то эта ячейка будет изменена.
Я убедился ReadOnly = false
и enabled = true
. До того, что из того, что я прочитал, я бы просто сделал что-то вроде этого:
adapter.Update(dataset);
или что-то в этом роде. однако, это не сохраняет изменения в моей базе данных. Я также не уверен, как редактировать программно. Я также не уверен, должна ли я иметь команду обновления OLEDB или нет. Если что-то не понятно, пожалуйста, ответьте, и я был бы рад уточнить. Спасибо!
edit: извините, если его все еще трудно понять!
вот код ...
private void dgv_DataLookup_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DialogResult dr;
dr = MessageBox.Show("Are you sure you want to edit this field?", "Edit Cell", MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
//update the table in my database
}
}
это не много, но, надеюсь, вы можете попытаться увидеть, что я пытаюсь сделать
изменить еще раз: это весь соответствующий код для этой части (это код, который отображает сетку данных, которую я хочу редактировать)
OleDbConnection cs;
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet dsB = new DataSet();
//If clicked search button
else if (combo_View.Text == "Orders")
{
da.SelectCommand = new OleDbCommand("SELECT * FROM TestQuery WHERE (VendorName = @VendorName OR @VendorName = '') AND (CustomerName = @CustomerName OR @CustomerName = '') AND ((@From IS NULL AND @To IS NULL) OR orderDate BETWEEN @From AND @To) AND (ItemNum = @ItemNum OR @ItemNum = '') AND (PO = @PO OR @PO = '') ORDER BY CustomerName", cs);
da.SelectCommand.Parameters.Add("@VendorName", OleDbType.VarChar).Value = combo_VendorView.Text.ToString();
da.SelectCommand.Parameters.Add("@CustomerName", OleDbType.VarChar).Value = combo_CustomerView.Text.ToString();
if (!chk_viewAllDates.Checked)
{
da.SelectCommand.Parameters.Add("@From", OleDbType.Date).Value = "#" + tp_viewFrom.Value.Date.ToString("M/d/yyyy") + "#";
da.SelectCommand.Parameters.Add("@To", OleDbType.Date).Value = "#" + tp_viewTo.Value.Date.ToString("M/d/yyyy") + "#";
}
else
{
da.SelectCommand.Parameters.Add("@From", OleDbType.Date).Value = DBNull.Value;
da.SelectCommand.Parameters.Add("@To", OleDbType.Date).Value = DBNull.Value;
}
da.SelectCommand.Parameters.Add("@PO", OleDbType.VarChar).Value = txt_POLookup.Text.ToString();
da.SelectCommand.Parameters.Add("@ItemNum", OleDbType.VarChar).Value = combo_ItemNumLookup.Text.ToString();
dsB.Clear();
da.Fill(dsB);
dgv_DataLookup.DataSource = dsB.Tables[0];
}
пожалуйста, дайте мне знать, если вам нужно больше кода. любая помощь приветствуется :)