Указание записей, подлежащих удалению из базы данных, с помощью метода TableAdapter.Update
Я возился с этим довольно давно, и это становится все менее и менее веселым; Я следовал руководству MSDN для удаления строки из сетки данных. И это работает для любой строки, однако я не могу указать строку... по сути, я могу удалить случайные строки с помощью CurrentIndex
параметр, что я пытаюсь быть более конкретным, вызывает у меня ошибки преобразования.
В скорлупе орехов "FindByID" (мой первичный ключ) выдает мне ошибки "object to long" и т. Д. Не могу найти строку, которую я хочу удалить.
//int ThisRow = radGridView1.CurrentIndex.Value;
// Locate row for deletion
VSConnectorDataSet.TestTableRow oldTestTableRow;
oldTestTableRow = vSConnectorDataSet.TestTable.FindByID(
Int64.Parse(radGridView1.CurrentRow.Cells["ID"].Value));
// Delete the row from the dataset
oldTestTableRow.Delete();
// Delete from database
this.testTableTableAdapter1.Update(this.vSConnectorDataSet.TestTable);
//DataRow rowDel=vSConnectorDataSet.TestTable.Rows[ThisRow];
//rowDel.Delete();
//testTableTableAdapter1.Update(vSConnectorDataSet);
2 ответа
Int64.Parse
принимает только строку Возможно, попробуйте:
long selRowVal = (long)radGridView1.CurrentRow.Cells["ID"].Value;
oldTestTableRow = vSConnectorDataSet.TestTable.FindByID(selRowVal);
или же
Int64.Parse(radGridView1.CurrentRow.Cells["ID"].Value.ToString());
Не ясно, какой тип данных Cell.Value
является. Возможно, явное приведение может помочь.
Обнаружив, как Convert.ToInt64, я теперь могу нацелить мою удаленную строку с помощью метода привязанного набора данных-таблицы-базы-данных-базы данных.
private void DeleteToolStripButton_Click(object sender, EventArgs e)
{
long ThisRow = Convert.ToInt64((radGridView1.CurrentRow.Cells["ID"].Value));
DialogResult DelEntry = MessageBox.Show("Do you want to delete the entry titled '" + radGridView1.CurrentRow.Cells["SparesTitle"].Value + "'?", "Delete this entry?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
switch (DelEntry)
{
case DialogResult.OK:
// Locate row for deletion
VSConnectorDataSet.TestTableRow oldTestTableRow;
oldTestTableRow = vSConnectorDataSet.TestTable.FindByID(ThisRow);
// Delete the row from the dataset
oldTestTableRow.Delete();
// Delete from database
this.testTableTableAdapter1.Update(this.vSConnectorDataSet.TestTable);
break;
//
// To Do - Give Slected to another row; having just deleted our 'CurrentRow'
//
case DialogResult.Cancel:
break;
}
}