GridView 列验证,显示错误信息不要失去焦点
Posted
技术标签:
【中文标题】GridView 列验证,显示错误信息不要失去焦点【英文标题】:GridView Column validation, display error message don't loose focus 【发布时间】:2012-06-22 06:33:02 【问题描述】:我需要验证一个 gridView 列,例如该列中所有元素的总和
如果用户输入一个值并且总和超过了我想显示自定义错误消息的限制。
我已经尝试在列的存储库上使用此事件编辑:
void pinEditRepositoryItem_Validating(object sender, System.ComponentModel.CancelEventArgs e)
e.Cancel = true;
gridview1.SetColumnError(m_imixGridView.Columns["MyColumn"], "ColumnSum must be <= 100", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical);
但是,当设置
e.Cancel = true;
我收到默认消息“无效值”。
如果我使用
gridview1.SetColumnError(m_imixGridView.Columns["MyColumn"], "ColumnSum must be <= 100", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical);
仅,错误消息是正确的,但如果我在焦点之外单击,则会丢失。
我看到有多种验证行的方法,但没有找到最适合这种情况的解决方案。
如果验证失败,是否可以禁用单元格上的“不聚焦”?
非常感谢!
【问题讨论】:
【参考方案1】:Source
恐怕很难根据问题确定问题的原因 关于提供的信息。通常,
ValidatingEditor
事件 当一个活动的编辑器关闭并且它的值被改变时触发。ValidateRow
事件在current row loses focus
时触发,并且 它的一些值已更改。
我建议你通过以下链接:Validating RowsValidating EditorsBaseView.ValidatingEditor Event
检查这个例子:
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraEditors.Controls;
private void gridView1_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e)
GridView view = sender as GridView;
if(view.FocusedColumn.FieldName == "Discount")
//Get the currently edited value
double discount = Convert.ToDouble(e.Value);
//Specify validation criteria
if(discount < 0)
e.Valid = false;
e.ErrorText = "Enter a positive value";
if(discount > 0.2)
e.Valid = false;
e.ErrorText = "Reduce the amount (20% is maximum)";
private void gridView1_InvalidValueException(object sender, InvalidValueExceptionEventArgs e)
//Do not perform any default action
e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
//Show the message with the error text specified
MessageBox.Show(e.ErrorText);
编辑器验证在尝试保存编辑值(使用PostEditor
方法)或关闭活动编辑器时进行。首先,执行自动验证。编辑器确定它是否可以接受输入的值。执行自动验证后,将引发 ValidatingEditor
事件。处理此事件以实现对单元格值的自定义约束。
如果您的条件失败,则设置e.Valid = false;
和e.ErrorText = "ColumnSum must be <= 100";
并处理gridview 的InvalidValueException
事件。
【讨论】:
以上是关于GridView 列验证,显示错误信息不要失去焦点的主要内容,如果未能解决你的问题,请参考以下文章
jsp一个文本框在失去焦点的时候,显示其输入的值,如果没有输入该文本框获得焦点
当控件即将失去焦点时,是不是存在从 C++ 程序触发的事件?