0

私は問題を抱えていて、ウェブを検索していましたが、私を助けるものを見つけることができませんでした.

これは私の問題です。私は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を押しても行から抜け出すことはできません

それを解決する方法はありますか?

どうもありがとうございました

4

1 に答える 1

0

わかりました、私はそれについて Telerik に尋ねました。そして、Y が解決策を教えてくれました。それは本当の解決策ではなく、回避策のパッチのようなものですが、今のところ私にとっては良いことです.

http://www.telerik.com/community/forums/winforms/gridview/esc-in-gridviewdatetimecolumn-inside-raddatagridview-after-i-did-an-e-cancel-true-in-row-validation.aspx

ありがとう

于 2013-09-09T08:00:39.707 に答える