使用TableAdapter.Update方法指定要从数据库中删除的记录

时间:2010-08-01 16:52:24

标签: c# winforms data-binding .net-3.5 system.data.datatable

我一直在搞这个问题已经有一段时间了,它变得越来越没有乐趣;我跟着MSDN guide来删除数据网格中的一行。并且它适用于任何行但是我无法指定行...基本上我可以使用CurrentIndex参数删除随机行我尝试更具体的任何东西让我一个转换错误。

在一个坚果外壳'FindByID'(我的主键)给我'对象长'错误等。无法确定我要删除的行。

    //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 个答案:

答案 0 :(得分:0)

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是什么数据类型。也许明确的演员可能有所帮助。

答案 1 :(得分:0)

找到了如何转换.ToInt64我现在可以通过绑定的dataset-tableadapter-database方法定位已删除的行。

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;
    }
}