1


0

TableAdapter.Updateメソッドを使用してデータベースから削除するレコードを指定する

私は今かなり長い間これをいじっていて、ますます面白くなってきています。 MSDNガイドに従って、データグリッドから行を削除しました。 そして、それは_any_行で動作しますが、行を指定することはできません…​ 基本的に、 `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 Answer


0


http://msdn.microsoft.com/en-us/library/3b6b4bx3.aspx [Int64.Parse]は文字列のみを受け取ります。 おそらく試してみてください。

long selRowVal = (long)radGridView1.CurrentRow.Cells["ID"].Value;
oldTestTableRow = vSConnectorDataSet.TestTable.FindByID(selRowVal);

or

Int64.Parse(radGridView1.CurrentRow.Cells["ID"].Value.ToString());

`Cell.Value`がどのデータ型であるかは明確ではありません。 おそらく、明示的なキャストが役立つかもしれません。


0


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