我遇到了问题并且一直在网上搜索,找不到任何可以帮助我的内容。
这是我的问题。 我在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答案 0 :(得分:0)
好的,我问Telerik有关它,而且我给了我一个解决方案。 它不是一个真正的解决方案,它更像是一个解决方案,但目前它对我有好处。
感谢 Iair