前言:
昨天刚好有人问了这个问题,因此就针对这个问题,补上一篇吧。
正文:
如图:在用户编辑列表中,用户名是会自动检测是否已存在的。
具体对应的Html内容如下:
1 2 3 4 | < label >< em >*</ em >用户名:</ label > < input name="UserName" id="UserName" missingmessage="" class='easyui-validatebox' validtype="exists['UserName']" required="required" /> </ div > < div class="short"> |
验证类型的参数是一个字符串,为字段的name。
发起的请求内容:
核心原理:
具体的JS实现在:Aries.EasyUIExtend.js 文件中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | validator: function (value, param) { if (!param[0]) { this.message = $Core.Lang.ruleError; return false; } var data = {}; data.n = param[0].name || param[0]; data.v = value; if (data.n.indexOf(',') > -1) { var items = data.n.split(','); if (items.length > 1) { data.n = items[0]; var $input = $(":input[name='" + items[1] + "']"); if ($input) { data.n2 = items[1]; data.v2 = $input.val(); } if (items.length > 2) { var $input = $(":input[name='" + items[2] + "']"); if ($input) { data.n3 = items[2]; data.v3 = $input.val(); } } } } var id = param[1] || AR.Utility.queryString('id'); if (id) data.id = id; //method, objName, data, async, url, callback, isShowProgress var result = AR.Ajax.get("Exists", AR.Form.tableName, data); if (result) { if (result.success) { this.message = $Core.Lang.dataExists; return false; } return true; } else { this.messgage = $Core.Lang.requestFail; return false; } } }, |
这段实现,可以带多两个参数,即可以满足三个联合主键组成的唯一。
即配置可以成Exsists['name1,name2,name3','主键ID的值,不传则从请求的参数获取']。
对应的后台代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | [ActionKey( "View,Get" )] /// <summary> /// 是否存在某数据。 /// </summary> public void Exists() { string name = Query< string >( "n" , "" ); string value = Query< string >( "v" , "" ); string name2 = Query< string >( "n2" , "" ); string value2 = Query< string >( "v2" , "" ); string name3 = Query< string >( "n3" , "" ); string value3 = Query< string >( "v3" , "" ); //支持到三个,可以了 bool result = false ; using (MAction action = new MAction(ObjCode)) { string id = GetID; string where = string .Format( "{0}='{1}'" , name, value); if (name2 != "" && value2 != "" ) { where += string .Format( " and {0}='{1}'" , name2, value2); } if (name3 != "" && value3 != "" ) { where += string .Format( " and {0}='{1}'" , name3, value3); } if (! string .IsNullOrEmpty(id)) { where += string .Format( " and {0}<>'{1}'" , action.Data.PrimaryCell.ColumnName, id); } result = action.Exists( where ); } jsonResult = JsonHelper.OutResult(result, string .Empty); } |
扩展:在行内编辑,如何实现该功能:
V5.4.1.3或以前:这里只给出思路,dg.options.onEditing事件中,可以拿到编辑框,可以动态赋加验证属性,也可以拿到值,再调用Exsits手工检测。
V5.4.1.4版本,只要在配置表头里,把唯一项打勾即可。
V5.4.2版本,增加其它验证,只要配置格式规则即可:【该规则可以和勾选唯一判断同时存在。】【2020-10-18】
其它说明:V5.4.2 之后,格式规则不再需要$:前缀,直接用Json。
版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。 |
个人微信公众号![]() |
Donation(扫码支持作者):支付宝:![]() |
Donation(扫码支持作者):微信:![]() |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2016-07-25 聊聊数据库级联删除与伪删除的设计方案
2013-07-25 CodeFirst实战:用文本数据库存档软件配置
2011-07-25 性能杀手之异常霸气外露!找死!