0

私のアプリケーションでは、DataGridViewと呼ばれるContracts.

私はいくつかのステップを実行するメソッドを持っていContracts_UserDeletingRowます..

まずMessageBox、アクションを確認するために を生成します。確認された場合 - 行が削除され、すべてが完全に機能します。

ただし、ユーザーが を選択Cancelすると、行はビューから自動的に削除されます。サーバー側で削除されたのではなく、非表示になっただけです。

この問題を解決するために、これを試しました。

if (MessageBox.Show("Are you sure you want to delete?", "Verify Delete", MessageBoxButtons.OKCancel) == DialogResult.OK)

{Update the record in background...}

    else { GetContractLevels(); this.Activate(); }

このGetContractLevels()メソッドはソースからビューを更新しますが、なぜ実行されないのでしょうか? ボタンのクリックから同じメソッドを実行すると、動作します。

4

3 に答える 3

1

設定する必要がありますe.Cancel = true

if (MessageBox.Show("Are you sure you want to delete?", "Verify Delete", MessageBoxButtons.OKCancel) == DialogResult.OK)
{  Update the record in background...  }
else { 
    e.Cancel = true;//Do this to cancel the physical deleting row of user
    GetContractLevels(); 
    this.Activate(); 
}
于 2013-10-01T09:03:50.157 に答える
0

データセットはありますか? その場合は、Main() 関数を確認できます。InitializeComponent() の下に、データを datagridview にロードする行があるはずです。そのコードを使用して datagridview を更新してください。ユーザーがトランザクションをキャンセルすると、datagridview は何も起こらなかったかのように更新されます。

于 2013-10-01T08:36:23.223 に答える
0

削除メソッド内でソースを更新していることに気付きました。つまり、更新しますが、とにかく削除して、次の方法で解決しました。

これは、行が削除された後に更新されます。

ただし、私の意見では、King King にはよりクリーンなソリューションがあります。

private void Contracts_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
            {
                GetContractLevels();
            }
于 2013-10-01T09:09:01.793 に答える