• BPM中字段查重,C#Ajac调用示例


    BPM中字段查重记录:

    这也算是一个C#调用Ajax的示例吧,如果是异步加载的话async: false去掉就可以了。

    需求:比如现在要录入一些信息,但是,有一个字段不能重复,BPM表都是自己生成的,所以我们需要自己在保存的时候进行验证。在保存的时候获取到要判断的字段查看是不是复核要求,数据库有没有当前字段,如果有的话,就提示错误信息,让用户重新输入。

    建好表单之后,只需增加JavaScript代码:

     1     <script type="text/javascript">
     2         $.MvcSheet.Ready(function () {
     3             $("input[data-datafield='cardNumber']").change(function () {
     4                 setTimeout(function () {
     5                     ClearerrorMessagecardNumber();
     6                 }, 1000);
     7             });
     8         });
     9 
    10         $.MvcSheet.Validate = function () {
    11             if ($.MvcSheetUI.SheetInfo.ActivityCode == "Activity2") {
    12                 if (this.Action == "Submit") {
    13                     var result = true;
    14                     result = CheckCardNumber();
    15                     return result;
    16                 }
    17             }
    18         }
    19         function CheckCardNumber() {
    20             var varcardnumber = $.MvcSheetUI.GetControlValue("cardNumber");
    21             ClearerrorMessagecardNumber();
    22             var result = true;
    23             var ajaxUrl = "/portal/Ajax/CardNumberRepeatHandler.ashx";
    24             $.ajax({
    25                 async: false,
    26                 type: "post",
    27                 url: ajaxUrl,
    28                 data: { "cardNumber": varcardnumber, "ObjectID": $.MvcSheetUI.SheetInfo.BizObjectID },
    29                 success: function (e) {
    30                     if (e == "0") {
    31                         var spanhtml = "<label id="errorMessagecardNumber" class="InvalidText">";
    32                         var html = "";
    33                         html += "证件号码重复";
    34                         spanhtml += html + "</label>";
    35                         $("input[data-datafield='cardNumber']").removeClass("inputMouseEnter");
    36                         $("input[data-datafield='cardNumber']").addClass("inputError inputMouseOut")
    37                         $("input[data-datafield='cardNumber']").after(spanhtml);
    38                         console.log("12212");
    39                         result = false;
    40                     }
    41                 }
    42             });
    43             return result;
    44         }
    45 
    46         function ClearerrorMessagecardNumber() {
    47             if ($("#errorMessagecardNumber").length >= 1) {
    48                 $("#errorMessagecardNumber").remove();
    49                 $("input[data-datafield='cardNumber']").removeClass("inputError inputMouseOut");
    50                 $("input[data-datafield='cardNumber']").addClass("inputMouseEnter");
    51             }
    52         }
    53 </script>

    这里是调用Ajax强制同步完成的,不然的话程序会先进行了保存,然后才会提示错误,这样达不到需求的效果,那么,Ajax代码是这样的:

    <%@ WebHandler Language="C#" Class="OThinker.H3.Portal.Ajax.CardNumberRepeatHandler" %>
    
    using System;
    using System.Web;
    using OThinker.H3.BizBus;
    using System.Data;
    using System.Collections.Generic;
    using System.IO;
    using OThinker.H3.Apps;
    using System.Linq;
    using OThinker.H3.WorkflowTemplate;
    using OThinker.H3.Acl;
    using System.Text;
    
    namespace OThinker.H3.Portal.Ajax
    {
        public class CardNumberRepeatHandler : HttpHandlerBase
        {
    
            public override void DoAction(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                string strobjectid = this.Request.Form["ObjectID"] ?? "";
                string strcardnumber = this.Request.Form["cardNumber"] ?? "";
    
                string result = string.Empty;
    
    
                if (!string.IsNullOrWhiteSpace(strobjectid))
                {
                    string strsql = "select 1 from I_isRepeat where objectid!='" + strobjectid + "' and cardNumber='" + strcardnumber + "'";
                    DataTable dt = OThinker.H3.WorkSheet.AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(strsql);
                    
                    if (dt!=null && dt.Rows.Count>0)
                    {
                        result = "0";
                    }
                    else
                    {
                        result = "1";
                    }
                }
                context.Response.Clear();
                context.Response.Write(result);
                context.Response.End();
            }
    
        }
    }
  • 相关阅读:
    解决:fatal error LNK1104: 无法打开文件“libc.lib”
    解决:error LNK2026: 模块对于 SAFESEH 映像是不安全的
    相似性度量(Similarity Measurement)与“距离”(Distance)
    按下开机键后,电脑都干了些什么?
    解决win10中chm内容显示为空白的问题
    BootStrap 模态框基本用法
    error CS0016: 未能写入输出文件
    解决网页前端的图片缓存问题
    .net 新闻点击量修改,避免恶意刷新
    使用 jQuery 页面回到顶部
  • 原文地址:https://www.cnblogs.com/jellydong/p/7244112.html
Copyright © 2020-2023  润新知