单元格输入验证
您可以在将新数据保存到数据源之前对其进行验证。您可以禁止将无效数据保存到数据源,并指出任何错误。
单元格验证
步骤1.处理验证事件 处理一个验证事件
GridControl提供了以下事件来手动验证单元格值。
- GridColumn.Validate(或TreeListColumn.Validate)事件允许你验证一个特定列的单元格值。
- GridViewBase.ValidateCell(或TreeListView.ValidateCell)事件允许你验证所有的单元格值。
<dxg:GridColumn FieldName="UnitPrice" Validate="OnValidate" />
void OnValidate(object sender, GridCellValidationEventArgs e) { }步骤2. 验证一个新值
使用以下GridCellValidationEventArgs的属性来获取单元格值。
- ValidationEventArgs.Value属性返回一个应该被验证的新值。
- GridCellValidationEventArgs.CellValue属性返回一个原始值。
在下面的代码示例中,如果产品停产,产品的价格不能降低30%以上。
void OnValidate(object sender, GridCellValidationEventArgs e) { bool discontinued = ((Product)e.Row).Discontinued; if (discontinued) { double discount = 100 - (Convert.ToDouble(e.Value) * 100) / Convert.ToDouble(e.CellValue); if (!(discount > 0 && discount <= 30)) { e.IsValid = false; } } }步骤3. 显示错误
使用以下GridCellValidationEventArgs的属性来定制错误指示。
- ValidationEventArgs.ErrorType属性允许你指定所需的图标。
- ValidationEventArgs.ErrorContent属性允许您指定错误工具提示的描述。
void OnValidate(object sender, GridCellValidationEventArgs e) { bool discontinued = ((Product)e.Row).Discontinued; if (discontinued) { double discount = 100 - (Convert.ToDouble(e.Value) * 100) / Convert.ToDouble(e.CellValue); if (!(discount > 0 && discount <= 30)) { e.IsValid = false; e.ErrorType = ErrorType.Critical; if (discount < 0) { e.ErrorContent = string.Format("单价不能大于 ${0}", Convert.ToDouble(e.CellValue)); return; } e.ErrorContent = string.Format("折扣不能大于 30% (${0}). 请核对价格.", Convert.ToDouble(e.CellValue)*0.7); } } }