起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11737|回复: 7

常见问题解决[唯一性验证]

  [复制链接]

10

主题

897

帖子

1909

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1909
QQ
发表于 2010-12-24 17:24:37 | 显示全部楼层 |阅读模式
当需要在UI上判断某个值是唯一的时候可是参考附件中的方法。

unique.zip

6.66 KB, 下载次数: 2316

10

主题

27

帖子

314

积分

版主

Rank: 7Rank: 7Rank: 7

积分
314
QQ
发表于 2010-12-27 23:09:01 | 显示全部楼层
希望多多贡献!:thumbsup: :thumbsup: :thumbsup:
(承接各种X5平台外包项目、人月支持)13987117851
软捷科技30名X5平台应用开发人员为您服务!

4

主题

87

帖子

195

积分

初级会员

Rank: 2

积分
195
QQ
发表于 2013-8-21 09:45:34 | 显示全部楼层
本帖最后由 hehongbo 于 2013-8-22 20:22 编辑

参考上边例子
远程的联系方法 QQ 2747052626。添加好友时,需要填写论坛账号
发远程时同时也发一下

4

主题

87

帖子

195

积分

初级会员

Rank: 2

积分
195
QQ
发表于 2013-8-23 14:43:26 | 显示全部楼层
本帖最后由 hehongbo 于 2013-8-23 14:45 编辑

  1.首先我们对需要做验证的字段创建约束。如图所示:
   5(%T
2.我们需要自定义Action,因为我们需要通过自己定义的Action来获取数据库的数据,看界面输入的相应字段是否在数据库已经存在。如图所示:
       H}3TP7GTGH@X9D$X0HGN3MM.jpg
     点击生成按钮,然后点击代码,编辑代码如下所示:
public static int unique(String goodname) throws Exception {
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        int count =0;
        try{
                conn = ModelUtils.getConnection("/GO");
                ContextHelper.getTransaction().begin(conn);
                stat = conn.createStatement();
                try {
                        String sqlQuery = "select count(*) as countname from GO_good  where fWPMC='"+goodname+"'";
                        rs = stat.executeQuery(sqlQuery);
                        rs.next();
                       count=rs.getInt("countname");
                      } finally {
                                rs.close();
                                rs = null;
                        }
                } finally {
                        stat.close();
                        stat = null;
                        conn.close();
                        conn = null;
                }
                return count;
        }


3.自定义js函数,调用自定义的Action,判定返回值到底是false还是ture。
mainActivity.grdMainFNameColConstraint = function(){
/**
  *
   1.页面展示里面不能有重复的
   2.页面展示里面有删除的,同时新增了一个和数据库有重复的,但是和数据库重复的数据 已经在前台删掉了
   3.和数据库不能有重复的
  *
  **/
         

var f=true;
       var currentValue = justep.xbl('dataMain').getValue("fWPMC");
       var length=justep.xbl('dataMain').find(["fWPMC"],[currentValue]).length;
       var params = new justep.Request.ActionParam();
       params.setString("goodname",currentValue);
        if(length > 1){
                   f=false;
         }else if(length==1){
                justep.Request.sendBizRequest2({
                            dataType: "application/json",
                            action: "uniqueAction",
                           parameters: params,
                           callback: function(result) {
                                if (result.state) {
                                   if(result.response==0)
                                  {
                                       f=true;
                                   }else if(result.response==1)//理论上只有1条数据是重复的
                                   {
                                         if(justep.xbl('dataMain').getState(justep.xbl('dataMain').getID())=='none')
                                         {
                                                     f=true;
                                             } else if(justep.xbl('dataMain').getState(justep.xbl('dataMain').getID())=='new'||justep.xbl('dataMain').getState(justep.xbl('dataMain').getID())=='edit')
                                             {
                                                     var deleteRowIds =justep.xbl('dataMain').getChangedIDs(justep.XData.STATE.DELETE,",");//得到grid中已经删除的ID.
                                                      if(deleteRowIds!=undefined&&deleteRowIds!=""){
                                                                    if(deleteRowIds.indexOf(justep.xbl('dataMain').getID())!=-1){//判断当前新增或者修改的数据所在ID是否包含在删除的ID中,防止主键重复。
                                                                                      f=false;
                                                                    }else {
                                                                                        f=true;
                                                                     }
                                                        }
                                                       else
                                                        {
                                                                  f=true;
                                                       }
                                       }
      
                                 }
                                 else
                                  {
                                         justep.Request.errorMessage(null, "数据库中有重复的记录,并且不是期望的结果数量(期望记录数:1条)",null,null);
                                          f=false;
   
                                   }
              } else {
                           justep.Request.errorMessage(result, "查询数据失败!",result.url,result.param);
                           f=false;
                  }
          }
            });
                          return f;
     }
};

远程的联系方法 QQ 2747052626。添加好友时,需要填写论坛账号
发远程时同时也发一下

59

主题

264

帖子

386

积分

中级会员

Rank: 3Rank: 3

积分
386
QQ
发表于 2014-12-7 23:22:32 | 显示全部楼层
hehongbo 发表于 2013-8-23 14:43
1.首先我们对需要做验证的字段创建约束。如图所示:
  
2.我们需要自定义Action,因为我们需要通过自己定 ...

例子中的新建的Action在哪里?自定义的函数又可以在哪里找到呢?

59

主题

264

帖子

386

积分

中级会员

Rank: 3Rank: 3

积分
386
QQ
发表于 2014-12-7 23:26:34 | 显示全部楼层
hehongbo 发表于 2013-8-23 14:43
1.首先我们对需要做验证的字段创建约束。如图所示:
  
2.我们需要自定义Action,因为我们需要通过自己定 ...

JS找到了,Action动作被编辑到哪里去了

23

主题

69

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
发表于 2015-1-9 14:48:57 | 显示全部楼层
为什么不把这个唯一性校验的功能做成一个进系统内置的函数呢,到处都会用到的。

13

主题

313

帖子

399

积分

中级会员

Rank: 3Rank: 3

积分
399
QQ
发表于 2016-5-12 14:58:49 | 显示全部楼层
本帖最后由 fanlingli 于 2016-5-12 15:00 编辑

您好,您可以看看这个案例:http://bbs.wex5.com/thread-93423-1-1.html
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-25 04:18 , Processed in 0.071382 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表