我在行验证中执行了e.Cancel = true后,在radDataGridView里面的GridViewDateTimeColumn中的Esc

时间:2013-09-03 05:20:32

标签: c# winforms

我遇到了问题并且一直在网上搜索,找不到任何可以帮助我的内容。

这是我的问题。 我在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时不会让我离开行

知道怎么解决吗?

非常感谢你 最好的祝福 Iair

1 个答案:

答案 0 :(得分:0)

好的,我问Telerik有关它,而且我给了我一个解决方案。 它不是一个真正的解决方案,它更像是一个解决方案,但目前它对我有好处。

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

感谢 Iair