如何在 devexpress 中向表单字段添加动态验证规则
Posted
技术标签:
【中文标题】如何在 devexpress 中向表单字段添加动态验证规则【英文标题】:How to add a dynamic validation rule to a form field in dev express 【发布时间】:2020-02-01 19:29:17 【问题描述】:美好的一天,我是 Dev express 的新手,也是 razor pages 的新手。
我有一个包含用户列表的开发极端数据网格,用户具有用户类型,用户类型具有用户 ID 的最小范围和最大范围。
我想要的是在数据网格的标准编辑表单上的列上设置范围验证规则,因此当您添加新用户 id 时,用户 id 应该介于例如 1 和 49999 之间。范围存储在数据库。所以用户首先选择用户类型,用户类型表中会有一个范围,例如“员工”的用户类型的范围是 min 1 max 49999,这个范围我想在我的表单上用作验证。
目前我的 DevExtreme 数据网格代码:
@(html.DevExtreme().DataGrid<ACS.LIB.BE.User>().ID("userGrid")
.ElementAttr(new @class = "dx-card wide-card" )
.DataSource(d => d.Mvc().Controller("User")
.LoadAction("Get").Key("ID")
.InsertAction("InsertUser")
.UpdateAction("UpdateUser")
.DeleteAction("DeleteUser"))
.ShowBorders(false)
.FilterRow(f => f.Visible(true))
.FocusedRowEnabled(true)
.FocusedRowIndex(0)
.ColumnAutoWidth(true)
.ColumnHidingEnabled(true)
.Columns(columns =>
columns.AddFor(m => m.ID).ValidationRules(val => val.AddRange().Min(100));
columns.AddFor(m => m.Name);
columns.AddFor(m => m.UserType.ID).Lookup(lookup => lookup
.DataSource(ds => ds.WebApi().Controller("UserType").LoadAction("Get").Key("ID"))
.DisplayExpr("Name")
.ValueExpr("ID")
).Caption("User Type");
columns.AddFor(m => m.Department.ID).Lookup(lookup => lookup
.DataSource(ds => ds.WebApi().Controller("Department").LoadAction("Get").Key("ID"))
.ValueExpr("ID")
.DisplayExpr("Name")
).Caption("Department");
columns.AddFor(m => m.Company.ID).Lookup(lookup => lookup
.DataSource(ds => ds.WebApi().Controller("Company").LoadAction("Get").Key("ID"))
.ValueExpr("ID")
.DisplayExpr("Name")
).Caption("Company");
columns.AddFor(m => m.Authority);
columns.AddFor(m => m.Email).ValidationRules(v => v.AddEmail().Message("Please enter a valid email address. yourname@yourdomain.com"));
columns.AddFor(m => m.Active).FilterValue(true);
)
我遇到的问题是columns.AddFor(m => m.ID).ValidationRules(val => val.AddRange().Min(100));
Min(100) 我想从一个没有像现在这样硬编码的数据源动态设置它,用户首先选择 Usertype 然后我想使用 UserType 表来获取 id 应该在的范围。所以我想从我的用户表中获取 100,但我不确定语法是什么或我应该如何去做。
我的用户类型表:
我的插入屏幕默认弹出来自数据网格的编辑对话框。
任何帮助或指点将不胜感激。
【问题讨论】:
【参考方案1】:您似乎需要定义一个custom validation rule。您可以使用validationCallback 函数中的options.data 参数获取用户类型 值。
请注意,最佳 ASP.NET Core 实践是使用模型属性的Data Annotation validation attributes。 DevExtreme ASP.NET Core 组件支持它们。
您可以在Implement a Custom Validation Rule 主题中找到代码 sn-ps。
【讨论】:
以上是关于如何在 devexpress 中向表单字段添加动态验证规则的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中向 ModelForm 添加外键字段?
Django 1.4 - 在元字段 Model=User 的表单中向用户字段添加自定义错误消息
在管理员中向 Django 的 export_as_csv 操作添加动态字段