2016-08-28 8 views
0

作成/更新/削除のための私のアプリケーションはarapter.Update(Dataset)を使用しています。私がしたいdatagridviewアダプタを使用して行を削除

DialogResult delete = MessageBox.Show("are you sure you want to delete this ?", "Delete Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); 

if (delete == DialogResult.OK) 
    { 
     MessageBox.Show("Deleted"); 
    } 

このコード:私は、削除ボタンをクリックすると、すべて正常に動作しますがupdate前に質問するためのダイアログボックスを追加する方法を探していますが、私はこのように質問するダイアログボックスを表示したい

を実行します以下のコードを入力しますが、削除コマンドがトリガされたかどうかを確認する方法はありません!

private void saveToolStripButton_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      this.Validate(); 
      this.bs.EndEdit(); 

      cmb = new SqlCommandBuilder(dataAdapter); 

      dataAdapter.UpdateCommand = cmb.GetUpdateCommand();   
      dataAdapter.Update(this.ds, "grupe"); 

      MessageBox.Show("Update successful"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+0

更新メソッドは、影響を受ける行の数を示すintを返します。 'rows = dataAdapter.Update(...)' DataAdapterは非常に強力ですが、カウントには挿入行と更新行も含めることができます。 – Plutonix

+0

もし返された場合1ユーザーの削除または更新の判断方法を教えてください – Ivan

+1

[変更された行](https://msdn.microsoft.com/en-us/library/thc1eetk.aspx)が削除されます、 'SqlDataAdapter'の' Update'メソッドを呼び出す前に 'DataTable'を使って編集、挿入してください。 –

答えて

0

がパラメータとしてDataRowStateを持つメソッドを書く、これを試してみてください。

public DialogResult Dialog(DataRowState state) 
     { 

      if (state == DataRowState.Modified) 
      { 

       DialogResult update = MessageBox.Show("are you sure you want to update this ?", "Update Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); 

       return update; 
      } 
      if (state == DataRowState.Deleted) 
      { 

       DialogResult delete = MessageBox.Show("are you sure you want to delete this ?", "Delete Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); 

       return delete; 
      } 
      return DialogResult.None; 

     } 

ボタンをクリックすると、

private void button1_Click(object sender, EventArgs e) 
     { 

      DataTable dt = dataTbl.GetChanges(); //it will return the changes 
      foreach (DataRow item in dt.Rows) 
      { 
       if (Dialog(item.RowState) == DialogResult.OK) 
       { 
        SqlCommandBuilder cmb = new SqlCommandBuilder(adp); 
        adp.UpdateCommand = cmb.GetUpdateCommand(); 
        adp.Update(this.dataTbl); 

       } 
      } 
     } 

DataTableは常にnullにすることができます。アダプタを充填した後にdatatable.AcceptChanges()を使用してください。

ホープヘルプ

関連する問題