【分享】插件在批量操作时处理个性化提示信息
金蝶云社区-云小爱
云小爱
4人赞赏了该文章 3,874次浏览 未经作者许可,禁止转载编辑于2013年12月19日 14:55:11

接到客户与伙伴反馈,批量操作时,要求个性化提示信息,目前平台一般给出提示如“单据编号XX操作XX成功or失败”
插件实现个性化提示方案:
首先在服务端插件OnPreparePropertys事件中加载需要显示的字段的key,否则操作对象不会加载这两个字段的值,并且在后续使用中,会出现中断,切记!
其次在客户端插件AfterDoOperation事件中处理提示信息
其中,客户端插件事件参数定义如下:
///


/// 表单操作执行后事件参数
///

public class AfterDoOperationEventArgs : EventArgs
{
///
/// 表单操作
///

public FormOperation Operation { get; set; }
///
/// 操作结果
///

public IOperationResult OperationResult { get; set; }
///
/// 构造函数
///

///
public AfterDoOperationEventArgs(FormOperation operation)
{
this.Operation = operation;
this.ExecuteResult = true;
}
///
/// 传入操作执行结果
///

///
///
public AfterDoOperationEventArgs(FormOperation operation,IOperationResult operationResult)
{
this.Operation = operation;
this.OperationResult = operationResult;
this.ExecuteResult = true;
}

///


/// 操作执行结果;默认成功(true)
///

public bool ExecuteResult { get; set; }
}

IOperationResult接口定义如下:
public interface IOperationResult : IInteractionResult
{
///


/// 是否成功
///

bool IsSuccess { get; set; }
///
/// 是否需要显示消息结果
///

bool IsShowMessage { get; set; }

///


/// 自定义消息处理窗口标识
///

///
/// 本结果对象会放在父项缓存区,其缓存键标识为:BOSConst.CST_KEY_OperationResultKey
///

string CustomMessageFormId { get; set; }

///


/// 自定义消息处理窗口其它参数控制
///

DynamicFormShowParameter CustomMessageFormParameter { get; }

///


/// 自定义消息模型,配合CustomMessageFormId=BOS_K3Displayer使用的
///

K3DisplayerModel CustomMessageModel { get; set; }

///


/// 校验失败结果集合,包括警告
///

List ValidationErrors { get; set; }
///
/// 校验成功后,操作结果集合
///

OperateResultCollection OperateResult { get; set; }
///
/// 获得警告信息集合
///

///
List GetWarningResults();
///
/// 获得错误信息集合
///

///
List GetFatalErrorResults();

///


/// 返回当前操作涉及的所有实体,被插件标记失败的实体将会自动从此集合中删除。
///

IEnumerable Rows { get; }

IEnumerable SuccessDataEnity { get; set; }

///


/// 函数返回值
///

object FuncResult { get; set; }
}
属性OperateResult是OperateResult类集合,具有Message可写属性,此属性记录操作提示信息

插件示例代码:

public overload void AfterDoOperation(AfterDoOperationEventArgs arg)
{
IOperationResult opResult = arg.OperationResult;
IEnumerable dys = opResult.SuccessDataEntity;

foreach(OperateResult resultItem in opResult.OperateResult)
{
DynamicObject dy = dys.Where(o=>o["Id"] == resultItem.PKvalue).FirstOrDefault();
if(dy != null)
{
//修改提示信息
//如严谨处理,需要使用LoadKDString,不使用也暂时无妨
resultItem.Message = "凭证字"+dy["凭证字key"].ToStrint()+"—"+"凭证号"+dy["凭证号key"].ToStrint()+"的凭证删除";
}
}
}

至此,将原凭证删除操作提示“序号XX凭证删除成功”替换为“凭证字XX—凭证号XX的凭证删除成功”