地服系统表单:实现唯一性校验等逻辑的写法

2017-06-05 14:22:36  访问(2017) 赞(0) 踩(0)




  • 这里功能初稿,需要改动几个地方

    1、eKing.SzdfLib\TableAttribute\JYGL\UTB_SZDF_JYGL_HYLX__Page.cs
    设置扩展JS

    // eKing.SzdfLib.TableAttribute.JYGL.UTB_SZDF_JYGL_HYLX__Page.cs 
    
    // 设置填充自定义JS //
    
                // 是否填充自定义JS //
                this.EmSelectFlagFillJs
                    = 
                    SlowX.Core.Enums.SelectFlag.EmSelectFlag.是;
    
    

    (作用,重新刷新代码后,添加下面这个JS的引用,把自定义逻辑扩展编写)
    <!-- 扩展自定的JS方法 -->
    <script type="text/javascript" src="~/Content/backstage/Areas/ZnbmJygl/JYGL/JyglHylx/index.js"></script>
    <!-- 扩展自定的JS方法END --> 


     
    2、eKing.SzdfPage\Areas\ZnbmJygl\JYGL\JyglHylx\EkSzdfDetailForm__Page.cs
    设置校验模式
                ekx = _TheCode;
                ivc = ekx;
                ivc.EmValidFlagV
                    = 
                    EkPageCreate.Enums.ValidFlag.EmValidFlag.唯一性校验;
    
    


    3、扩展JS写调用逻辑
    在~/Content/backstage/Areas/ZnbmJygl/JYGL/JyglHylx/index.js中
    
    
    function JsCheckInput4CheckUnique(pkId, selfThis, valueThis) {
        // 校验唯一性 //
        // 获得控件值 //
        var ctrlValue = EkGetCtrlValue(valueThis);
    
        // 校验代号的唯一性 //
        var ajaxUrl = "CheckUnique4TheCode";
    
        // 获得搜索的数据 //
        var ajxData = [];
    
        ajxData.push({ name: "_id", value: pkId });
        ajxData.push({ name: "inputvalue", value: ctrlValue });
    
        var theResult = false;
        var errMsg = "";
    
        $.ajax({
            cache: false,
            async: false, // 这里用false,不走异步模式 //
            url: ajaxUrl,
            type: "post",
            data: ajxData,
            success: function (rData) {
                if (rData == null) {
                    theResult = false;
                }
                else {
                    theResult = rData.IsSucc;
                    errMsg = rData.Msg;
                }
            }
        });
    
        if (theResult)
            return true;
    
        if (errMsg == null || errMsg == "")
            errMsg = "唯一校验失败";
    
        EkChangeCss(selfThis, errMsg);
    
        return false;
    }
    
    // 扩展JS校验 //
    function JsCheckInput4ExtendCode(pkId, selfThis, valueThis, extendCode) {
        // 
        switch(extendCode)
        {
            case "checkunique":
                // 校验唯一 //
                return JsCheckInput4CheckUnique(pkId, selfThis, valueThis);
            default:
                return true;
        }
    }
    
    

    4、在Areas\ZnbmJygl\Controllers\JYGL\JyglHylx\JyglHylxController__P.cs中,实现方法
            #region 代号的唯一性校验
    
            /// <summary>
            /// 唯一性校验
            /// </summary>
            /// <param name="pkId"></param>
            /// <param name="inputValue"></param>
            /// <param name="xdbHelper"></param>
            /// <returns></returns>
            protected bool CheckUnique4TheCodeResult
                (
                    string pkId,
                    string inputValue,
                    DBHelper xdbHelper
                )
            {
    
                // 逻辑方法 //
                eKing.SzdfPage.Helpers.eKingSzdfPageHelper
                    wh
                    =
                    eKing.SzdfPage.Helpers.eKingSzdfPageHelper.ekInstance;
    
                long longId = wh.LongByStr(pkId, 0);
    
                return wh.JyglHylxCheckIsUnique4TheCode(longId, inputValue, xdbHelper);
            }
    
            /// <summary>
            /// 唯一性校验
            /// </summary>
            /// <param name="xdbHelper">数据库链接串</param>
            /// <returns></returns>
            protected OperResult
                CheckUnique4TheCodeOper(DBHelper xdbHelper)
    
            { 
                // Http参数过来的相关的参数名 //
                HttpContextName hcn = HttpContextName.instance;
    
                // 获得关键字 //
                string pkId = Request.Form[hcn._id];
                string inputValue = Request.Form[hcn.InputValue];
    
                bool bFlag = CheckUnique4TheCodeResult(pkId, inputValue, xdbHelper);
    
                if(bFlag)
                {
                    return OperResult.ToSucc("");
                }
                else
                {
                    return OperResult.ToError("代号不唯一");
                }
            }
    
    
    
            /// <summary>
            /// 唯一性校验
            /// </summary>
            /// <returns>OperResult[IsSucc:是否成功;Msg:结果提示]</returns>
            public ActionResult CheckUnique4TheCode()
            {
                OperResult op = null;
    
                try
                {
                    op = CheckUnique4TheCodeOper(null);
                }
                catch (Exception err)
                {
                    op = DetailSaveOperResult.DetailSaveToError("发生异常:" + err.Message);
                    BaseWriteException(err);
                }
    
                ContentResult theResult = new ContentResult();
                theResult.ContentEncoding = UTF8Encoding.UTF8;
                theResult.ContentType = MIMETypes.Json;
                theResult.Content = op.ToJson();
    
                return theResult;
            }
    
            #endregion 代号的唯一性校验
    
    

    5、在Helpers中实现逻辑判断
    
            /// <summary>
            /// 经营管理 - 合约类型(代号) - 校验唯一性
            /// </summary>
            /// <param name="pkId">记录ID</param>
            /// <param name="theCode">代号值</param>
            /// <param name="xdbHelper">数据库链接串</param>
            /// <returns></returns>
            public bool JyglHylxCheckIsUnique4TheCode
                (
                    long pkId,
                    string theCode,
                    DBHelper xdbHelper
                )
            {
                bool theResult = true;
    
                bool bIsCreate = true;
    
                if (xdbHelper == null)
                {
                    xdbHelper
                        =
                        SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
                }
                else
                {
                    // 没有打开链接 //
                    bIsCreate = xdbHelper.IsNotOpen();
                }
    
                try
                {
                    if (bIsCreate)
                        xdbHelper.OpenDBHelper();
    
                    eKing.SzdfLib.Business.JYGL.UTB_SZDF_JYGL_HYLX
                        bll
                        =
                        eKing.SzdfLib.Business.JYGL.UTB_SZDF_JYGL_HYLX.instance;
    
                    eKing.SzdfLib.Entity.JYGL.UTB_SZDF_JYGL_HYLX
                        entity
                        =
                        new eKing.SzdfLib.Entity.JYGL.UTB_SZDF_JYGL_HYLX();
    
                    IQueryDriver iq = entity;
    
                    // id <> pkId //
                    iq.WhereAddLongNotEqual(entity._ID, pkId);
    
                    // theCode == theCode //
                    iq.AddIQueryItemWithEntityFieldInfo(entity._TheCode, theCode);
    
                    // 不存在表示唯一 //
                    theResult = !bll.IsExist(entity, xdbHelper);
    
                    if (bIsCreate)
                        xdbHelper.EndDBHelper();
    
                }
                catch (Exception err)
                {
                    if (bIsCreate)
                        xdbHelper.TranDBHelper();
    
                    throw err;
                }
                finally
                {
                    if (bIsCreate)
                        xdbHelper.FinallyDBHelper();
                }
    
                return theResult;
            }
    



  • // eKing.SzdfLib.TableAttribute.JYGL.UTB_SZDF_JYGL_HYLX__Page.cs 
    
    // 设置填充自定义JS //
    
                // 是否填充自定义JS //
                this.EmSelectFlagFillJs
                    = 
                    SlowX.Core.Enums.SelectFlag.EmSelectFlag.是;
    
    
  • 
            /// <summary>
            /// 经营管理 - 合约类型(代号) - 校验唯一性
            /// </summary>
            /// <param name="pkId">记录ID</param>
            /// <param name="theCode">代号值</param>
            /// <param name="xdbHelper">数据库链接串</param>
            /// <returns></returns>
            public bool JyglHylxCheckIsUnique4TheCode
                (
                    long pkId,
                    string theCode,
                    DBHelper xdbHelper
                )
            {
                bool theResult = true;
    
                bool bIsCreate = true;
    
                if (xdbHelper == null)
                {
                    xdbHelper
                        =
                        SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
                }
                else
                {
                    // 没有打开链接 //
                    bIsCreate = xdbHelper.IsNotOpen();
                }
    
                try
                {
                    if (bIsCreate)
                        xdbHelper.OpenDBHelper();
    
                    eKing.SzdfLib.Business.JYGL.UTB_SZDF_JYGL_HYLX
                        bll
                        =
                        eKing.SzdfLib.Business.JYGL.UTB_SZDF_JYGL_HYLX.instance;
    
                    eKing.SzdfLib.Entity.JYGL.UTB_SZDF_JYGL_HYLX
                        entity
                        =
                        new eKing.SzdfLib.Entity.JYGL.UTB_SZDF_JYGL_HYLX();
    
                    IQueryDriver iq = entity;
    
                    // id <> pkId //
                    iq.WhereAddLongNotEqual(entity._ID, pkId);
    
                    // theCode == theCode //
                    iq.AddIQueryItemWithEntityFieldInfo(entity._TheCode, theCode);
    
                    // 不存在表示唯一 //
                    theResult = !bll.IsExist(entity, xdbHelper);
    
                    if (bIsCreate)
                        xdbHelper.EndDBHelper();
    
                }
                catch (Exception err)
                {
                    if (bIsCreate)
                        xdbHelper.TranDBHelper();
    
                    throw err;
                }
                finally
                {
                    if (bIsCreate)
                        xdbHelper.FinallyDBHelper();
                }
    
                return theResult;
            }
    
  •         #region 代号的唯一性校验
    
            /// <summary>
            /// 唯一性校验
            /// </summary>
            /// <param name="pkId"></param>
            /// <param name="inputValue"></param>
            /// <param name="xdbHelper"></param>
            /// <returns></returns>
            protected bool CheckUnique4TheCodeResult
                (
                    string pkId,
                    string inputValue,
                    DBHelper xdbHelper
                )
            {
    
                // 逻辑方法 //
                eKing.SzdfPage.Helpers.eKingSzdfPageHelper
                    wh
                    =
                    eKing.SzdfPage.Helpers.eKingSzdfPageHelper.ekInstance;
    
                long longId = wh.LongByStr(pkId, 0);
    
                return wh.JyglHylxCheckIsUnique4TheCode(longId, inputValue, xdbHelper);
            }
    
            /// <summary>
            /// 唯一性校验
            /// </summary>
            /// <param name="xdbHelper">数据库链接串</param>
            /// <returns></returns>
            protected OperResult
                CheckUnique4TheCodeOper(DBHelper xdbHelper)
    
            { 
                // Http参数过来的相关的参数名 //
                HttpContextName hcn = HttpContextName.instance;
    
                // 获得关键字 //
                string pkId = Request.Form[hcn._id];
                string inputValue = Request.Form[hcn.InputValue];
    
                bool bFlag = CheckUnique4TheCodeResult(pkId, inputValue, xdbHelper);
    
                if(bFlag)
                {
                    return OperResult.ToSucc("");
                }
                else
                {
                    return OperResult.ToError("代号不唯一");
                }
            }
    
    
    
            /// <summary>
            /// 唯一性校验
            /// </summary>
            /// <returns>OperResult[IsSucc:是否成功;Msg:结果提示]</returns>
            public ActionResult CheckUnique4TheCode()
            {
                OperResult op = null;
    
                try
                {
                    op = CheckUnique4TheCodeOper(null);
                }
                catch (Exception err)
                {
                    op = DetailSaveOperResult.DetailSaveToError("发生异常:" + err.Message);
                    BaseWriteException(err);
                }
    
                ContentResult theResult = new ContentResult();
                theResult.ContentEncoding = UTF8Encoding.UTF8;
                theResult.ContentType = MIMETypes.Json;
                theResult.Content = op.ToJson();
    
                return theResult;
            }
    
            #endregion 代号的唯一性校验
    
    
  • 
    
    function JsCheckInput4CheckUnique(pkId, selfThis, valueThis) {
        // 校验唯一性 //
        // 获得控件值 //
        var ctrlValue = EkGetCtrlValue(valueThis);
    
        // 校验代号的唯一性 //
        var ajaxUrl = "CheckUnique4TheCode";
    
        // 获得搜索的数据 //
        var ajxData = [];
    
        ajxData.push({ name: "_id", value: pkId });
        ajxData.push({ name: "inputvalue", value: ctrlValue });
    
        var theResult = false;
        var errMsg = "";
    
        $.ajax({
            cache: false,
            async: false, // 这里用false,不走异步模式 //
            url: ajaxUrl,
            type: "post",
            data: ajxData,
            success: function (rData) {
                if (rData == null) {
                    theResult = false;
                }
                else {
                    theResult = rData.IsSucc;
                    errMsg = rData.Msg;
                }
            }
        });
    
        if (theResult)
            return true;
    
        if (errMsg == null || errMsg == "")
            errMsg = "唯一校验失败";
    
        EkChangeCss(selfThis, errMsg);
    
        return false;
    }
    
    // 扩展JS校验 //
    function JsCheckInput4ExtendCode(pkId, selfThis, valueThis, extendCode) {
        // 
        switch(extendCode)
        {
            case "checkunique":
                // 校验唯一 //
                return JsCheckInput4CheckUnique(pkId, selfThis, valueThis);
            default:
                return true;
        }
    }
    
    
  •             ekx = _TheCode;
                ivc = ekx;
                ivc.EmValidFlagV
                    = 
                    EkPageCreate.Enums.ValidFlag.EmValidFlag.唯一性校验;
    
    

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)