这里功能初稿,需要改动几个地方
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;
}
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;
}
}