我遇到了问题,一直在网上搜索,但找不到任何可以帮助我的东西。
这是我的问题。我在 WinForm 工作,c#
我有一个网格,其中是GridViewDateTimeColumn类型的 Column 。当用户更新一行时,我在事件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();
但这恢复了 date 的值,因为它是以前的(什么是好的),但是当我按下 ESC 时并没有让我离开该行
知道如何解决吗?
非常感谢您向 Iair 致以最诚挚的问候