私は問題を抱えていて、ウェブを検索していましたが、私を助けるものを見つけることができませんでした.
これは私の問題です。私はWinForm、c#で働いています
タイプGridViewDateTimeColumnの列であるグリッドがあります。ユーザーが行を更新すると、イベントRowValidatingでチェックし、日付が繰り返されたり、その他のエラーが発生した場合は、ユーザーにメッセージを表示し、行を検証しないようにe.cancel = trueを実行します。しかし、ESCを押すと。以前のようにすべての変更をキャンセルすることはできません。
これが私のコードです:
private void grdPirteyMenahel_RowValidating(object sender, RowValidatingEventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
if (e.Row != null)
{
//Generate a service to connect to DB
var factory = new MezumanimChannelFactory<IKerenService>(ServiceConsts.SERVICE_KEREN);
var service = factory.CreateChannel();
string sError = string.Empty;
//here I call a SP in the database that check if the dates are correct (column of dates are call it "MiTaarich" and "AdTaarich".
//The SP return a String with the error, if there is no error it will return and empty string
sError = GetErrorPirteySacharMenahel(Convert.ToDateTime(e.Row.Cells["MiTaarich"].Value), Convert.ToDateTime(e.Row.Cells["AdTaarich"].Value), Convert.ToInt32(e.Row.Cells["Kod"].Value));
if (sError != string.Empty)
{
e.Cancel = true;
RadMessageBoxHelper.Alert(sError);
}
}
}
catch (Exception ex)
{
Elad.Mezumanim.Client.Utils.Log.LogUtil.write(ex);
e.Cancel = true;
RadMessageBoxHelper.Alert(Messages.DataDisplayError, this);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
エラーが発生したときに、このコードを追加しようとしました:
DataTable dt = (grdPirteyMenahel.DataSource as DataTable);
dt.RejectChanges();
しかし、これは以前と同じように日付の値を回復します(良いことです)が、ESCを押しても行から抜け出すことはできません
それを解決する方法はありますか?
どうもありがとうございました