ASP.NET Aries 高级开发教程:表单检测字段是否已存(番外篇)
前言:
昨天刚好有人问了这个问题,因此就针对这个问题,补上一篇吧。
正文:
如图:在用户编辑列表中,用户名是会自动检测是否已存在的。

具体对应的Html内容如下:
<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 文件中。
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的值,不传则从请求的参数获取']。
对应的后台代码:
[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版本,只要在配置表头里,把唯一项打勾即可。

ASP.NET Aries 高级开发教程:表单检测字段是否已存(番外篇)的更多相关文章
- ASP.NET Aries 高级开发教程:Excel导入之代码编写(番外篇)
前言: 以许框架提供的导入配置功能,已经能解决95%以上的导入情况,但有些情况总归还是得代码来解决. 本篇介绍与导入相关的代码. 1.前端追加导入时Post的参数: var grid = new AR ...
- ASP.NET Aries 高级开发教程:Excel导入之单表配置(上)
前言: 随着ASP.NET Aries的普及,刚好也有点闲空,赶紧把Excel导入功能的教程补上. Excel导入功能,分为四篇:单表配置(上).多表高级配置(中).配置规则(下).代码编写(番外篇) ...
- ASP.NET Aries 高级开发教程:Excel导入之多表高级导入配置(中)
前言: 在面对Excel的各种复杂导入情况中,多表导入是很常见的情景. 今天就来写一下多表导入是如何配置的. 1.自定义导入模板 怎么自定义: 其实就是自己新建一个Excel了,把列头都写好. 不过有 ...
- ASP.NET Aries 高级开发教程:主题样式及多语言(标签化控制)
前言: 最新ASP.NET Aries升级到V5.2.0以上之后,之前的样式和多语言机制,有了重大的升级机制,这篇就简单介绍一下. 1.控制开关 在配置维护那里,新增了两个控制项: 2.如何添加主题 ...
- ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)
前言: 前面两篇都是大体介绍流程,有一些配置细节,没有细说,这里用一篇补上. 1.Excel配置项 起始行索引.列头跨行数: 对于自定义的Excel导入模板(有时候模板是由客户提供,模板的规则很乱) ...
- ASP.NET Aries 高级开发教程:使用存储过程(番外篇)
前言: 发现这个问题,有不少人提起过,所以就简单写成文章吧. 接下来看如何在Aries 框架中使用存储过程,整体步骤和绑定普通视图差不多. 步骤一:新建一个空视图. 可以在SqlCode管理中,创建一 ...
- ASP.NET Aries 高级开发教程:如何写WebAPI接口
前提: 最近,有不少同学又问到,Aries里如何提供WebAPI接口? 针对这个问题,今天给顺路写个教程,其实呢,很简单的. 方式一:直接用WebService提供接口. 用这种方式,直接添加接口就可 ...
- ASP.NET Aries 高级开发教程:行内编辑事件怎么新增数据到后台(番外篇)
前提: 今天又网友又提出了一个问题,说行内编辑保存之前,怎么新增一些数据提交到后台? 对方说看了源码,也没找到怎么处理,这里就写文给解答一下. 解答: 于是我看了一眼源码,只能说你没找到地方: 第12 ...
- ASP.NET Aries 入门开发教程4:查询区的下拉配置
背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...
随机推荐
- Android触摸反馈
事件分发 当点击事件发生时,事件最先传递给Activity,Activity会首先将事件将被所属的Window进行处理,即调用 superDispatchTouchEvent() 方法.通过观察sup ...
- PHP fsockopen受服务器KeepAlive影响的解决
在开发过程中常常遇到这样的需求,模拟浏览器访问某接口,并获取返回数据.我们比较常使用的方法是fsockopen与接口建立连接,然后发出指令,然后通过fgets接受返回值. 但是我们发现,通过PHP模拟 ...
- 谈谈.net对象生命周期
不用程序员操心的堆 — 托管堆 程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存. 栈内存,通常使用的 ...
- 《Windows内核安全与驱动开发》 2.3 重要的数据结构
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 2.3 重要的数据结构 一.驱动对象 Windows内核采用__的编程方式 ...
- Thinkphp5.1 导入第三方包的问题
一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...
- mac本地搭建svn
mac系统默认已经安装了svn,我们只需要配置并开启就可以了. 首先我们可以验证一下是否安装了svn,打开终端,输入命令 svnserve —version
- bash中$符号的一般用法
$一般用于获取变量的内容(字符串或数字等),用以构成命令version=$(uname -r).构成字符串echo "my name is $myname".进行算术运算等tota ...
- jQuery中detach&&remove&&empty三种方法的区别
jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...
- OSS 对象存储的那些事AmazonS3简单使用
对象存储是根据AmazonS3来做的封装,主要功能 :文件的上传下载 生成链接 对图片的处理 查看桶内对象等一系列的操作. 本文主要做的是文件的上传下载生成链接以及前期的准备工作 以springboo ...
- Use Swift Dynamic Framework (如何科学地引用第三方 Swift 库)
转自:http://andelf.github.io/blog/2014/07/07/use-swift-dynamic-library/ CocoaPods 由于完全使用静态链接解决方法,过度依赖 ...