随笔 - 714  文章 - 0  评论 - 12812  阅读 - 301万 

前言:

昨天刚好有人问了这个问题,因此就针对这个问题,补上一篇吧。

正文: 

如图:在用户编辑列表中,用户名是会自动检测是否已存在的。  

具体对应的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。

posted on   路过秋天  阅读(1247)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题: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 性能杀手之异常霸气外露!找死!
路过秋天
点击右上角即可分享
微信分享提示