校验文本框的值不为空或单据体某列字段值的服务插件
金蝶云社区-SJSONG
SJSONG
1人赞赏了该文章 1,549次浏览 未经作者许可,禁止转载编辑于2017年01月12日 17:21:34

问题描述:
1、运行时没有执行;
2、validator.EntityKey赋值是哪个表单的ID,单据头和单据体的ID都测试了,都不行;
3、单据头和单据体字段校验有哪些区别,能否给举例说明 一下。
非常感谢!!!
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
namespace bluesea_Service.ServicePlugIn.T_validate
{
[Description("采购校验")]
///


/// Test 保存操作服务
///

public class T_val_purchase : AbstractOperationServicePlugIn
{

public override void OnPreparePropertys(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreparePropertysEventArgs e)
{
//以下为新增的文本框ID
e.FieldKeys.Add("F_Validate");
base.OnPreparePropertys(e);
}

public override void OnAddValidators(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e)
{
TestValidator validator = new TestValidator();
validator.AlwaysValidate = true;
validator.EntityKey = "FBillHead";
e.Validators.Add(validator);
}

private class TestValidator : AbstractValidator
{
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
{
foreach (ExtendedDataEntity obj in dataEntities)
{
object materialID = obj.DataEntity["F_Validate"];
if (materialID == null)
{
validateContext.AddError(obj.DataEntity,
new ValidationErrorInfo
(
"", obj.DataEntity["Id"].ToString(), obj.DataEntityIndex, 0,
"001",
"错误信息",
"标题"
));
}
}
}
}
}

}