彩票走势图

DevExpress WinForms中文教程:Data Grid - 如何完成数据输入验证?

翻译|使用教程|编辑:龚雪|2024-10-08 13:45:34.810|阅读 12 次

概述:本文主要为大家介绍如何用DevExpress WinForms中热门的数据网格组件完成数据输入的验证,欢迎下载最新版体验~

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

本教程介绍DevExpress WinForm的Data Grid控件是如何利用网格组件完成数据输入验证的。

P.SDevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

获取DevExpress WinForms v24.1正式版下载

DevExpress技术交流群10:532598169      欢迎一起进群讨论

默认数据验证

默认情况下,DevExpress WinForm网格控件启用了内置数据类型验证。如果在绑定到数字数据字段的列中输入字符串值,然后按ENTER键或尝试将焦点从单元格移开,则网格将验证数据输入并引发错误,因为字符串无法转换为数字值。将鼠标悬停在错误图标上,可以看到相同的错误消息。

DevExpress WinForms中文教程图集

更正输入的值或放弃更改来继续使用网格控件,要取消更改,请按ESCAPE。

修改默认错误信息

要手动指定默认错误消息,请执行以下操作。

1. 处理视图的事件。

2. 在事件处理程序中,使用属性检查焦点列。

3. 尝试将事件的参数转换为所需的类型。

4. 如果该值不能转换,将参数设置为false,并指定自定义的属性值。

C#

private void gridView1_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e) {
GridView view = sender as GridView;
if (view.FocusedColumn.FieldName == "UnitPrice") {
double price = 0;
if (!Double.TryParse(e.Value as String, out price)) {
e.Valid = false;
e.ErrorText = "Only numeric values are accepted.";
}
}
}

运行应用程序,看看验证机制现在是如何显示自定义的错误消息的。

DevExpress WinForms中文教程图集
提供自定义数据验证规则

要验证数据,请执行以下操作:

1. 处理相同的事件。

2. 若要在特定列中只允许正数值,请检查转换值是否大于0。

3. 如果不是,将 参数设置为false并指定您的自定义错误消息。

C#

private void gridView1_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e) {
GridView view = sender as GridView;
if (view.FocusedColumn.FieldName == "UnitPrice") {
double price = 0;
if (!Double.TryParse(e.Value as String, out price)) {
e.Valid = false;
e.ErrorText = "Only numeric values are accepted.";
}
else if (price <= 0) {
e.Valid = false;
e.ErrorText = "The unit price must be positive.";
}
}
}

如果运行该应用程序,将看到在尝试向单元格中输入零时出现指定的错误消息。

DevExpress WinForms中文教程图集
显示“异常消息框”

要自定义显示错误的方式,请执行以下操作。

1. 处理视图的事件。

2. 在事件处理程序中,显示带有属性值的消息框。

3. 要禁用默认的错误图标和工具提示,请将参数设置为。

C#

private void gridView1_InvalidValueException(object sender, InvalidValueExceptionEventArgs e) {
MessageBox.Show(this, e.ErrorText, "Invalid Value", MessageBoxButtons.OK, MessageBoxIcon.Error);
e.ExceptionMode = ExceptionMode.NoAction;
}

DevExpress WinForms网格控件现在使用消息框通知您有关错误的信息。

DevExpress WinForms中文教程图集
启用行验证

如果一个值的有效性取决于同一行中的其他值,则可以通过处理事件启用行验证。

例如,确保一列中的值大于另一列中的值。

  1. 在ValidateRow事件处理程序中,获取所需的列对象。
  2. 使用视图的方法来确定聚焦行中的列值。
  3. 检查其中一个值是否大于另一个值。
  4. 使用方法将错误消息设置为列单元格,使用列对象作为第一个参数,使用错误消息字符串作为第二个参数。
  5. 若要将错误分配给整个行,请调用方法,并将第一个参数设置为null。
  6. 将事件的 参数设置为false,并将设置为自定义错误消息。

C#

private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e) {
GridView view = sender as GridView;
GridColumn colUnitsInStock = view.Columns["UnitsInStock"];
GridColumn colUnitsOnOrder = view.Columns["UnitsOnOrder"];

double unitsInStock = Convert.ToDouble(view.GetRowCellValue(view.FocusedRowHandle, colUnitsInStock));
double unitsOnOrder = Convert.ToDouble(view.GetRowCellValue(view.FocusedRowHandle, colUnitsOnOrder));
if (unitsInStock < unitsOnOrder) {
view.SetColumnError(colUnitsInStock, "The Units On Order value should be less than this value.");
view.SetColumnError(colUnitsOnOrder, "This value should be less than the Units In Stock value.");
view.SetColumnError(null, "Invalid data");
e.Valid = false;
e.ErrorText = "'Units On Order' and 'Units In Stock' values are not consistent.";
}
}

运行应用程序,输入无效值并尝试将焦点切换到另一行。此时将进行行验证,并调用带有指定错误文本的默认错误对话框。

DevExpress WinForms中文教程图集

单击Yes,然后将鼠标悬停在错误图标上,来查看为各个列指定的错误消息。

DevExpress WinForms中文教程图集
禁用默认错误信息框

要在验证行时禁用默认对话框窗口,请处理事件并将参数设置为。

C#

private void gridView1_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) {
e.ExceptionMode = ExceptionMode.NoAction;
}

现在当输入不正确的值时,消息将被抑制,但是您仍然可以在数据单元格和行指示符区域中看到相同的错误图标。

更多产品资讯及授权,欢迎“”!


DevExpress v24.1全新发布

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP