如何在服务端插件中实现交互式的提示

来源:互联网 发布:淘宝主板可靠吗 编辑:程序博客网 时间:2024/05/22 14:16
在单据进行保存、审核等操作时,常常需要把检查结果反馈给用户确认,甚至是多步骤确认,这种交互,暂时用BOS IDE难以实现,需要编写操作的服务端插件完成。

如何编写操作的服务端插件,与主题无关,我们先略过,直奔主题:在插件代码中实现交互提示;

1.       检查用户的确认信息,如果用户已经确认,则跳过检查,直接执行主功能:

// 定义交互来源标示,与其他检查区分,互不干扰string spensorKey = "???";bool ignore = false; // 用户是否已经确认过this.Option.TryGetVariableValue<bool>(spensorKey, out ignore);if (ignore || this.Option.HasInteractionFlag(spensorKey)){// TODO : 业务逻辑主代码return;}
2.  定义提示信息显示模型。提示信息可能有多列、多行。通过信息显示模型可以自定义列、不断增加行:

// 提示信息的列标题,以“~|~”分开两列string titleMsg = "行号~|~物料编码~|~物料名称~|~单据数量~|~序列号数量~|~错误消息";// 对应的提示信息格式,以"~|~"分开两列,以{n}进行占位string errMsg = "{0}~|~{1}~|~{2}~|~{3}~|~{4}~|~{5}";K3DisplayerModel model = K3DisplayerModel.Create(Context, titleMsg);
3.  向提示信息显示模型中,增加新的提示行:
string rowMsg = string.Format(errMsg, "msg1","msg2","msg3","msg4","msg5","msg6");((K3DisplayerModel)model).AddMessage(rowMsg);

4.  设置交互信息的整体属性,如整体提示,显示的按钮等:
// 设置一个整体的提示信息,提醒用户是否继续model.Option.SetVariableValue(K3DisplayerModel.CST_FormTitle, "有多条信息需要您确认,是否继续?");model.OKButton.Visible = true;model.OKButton.Caption = new BOS.LocaleValue("是", Context.UserLocale.LCID);model.CancelButton.Visible = true;model.CancelButton.Caption = new BOS.LocaleValue("否", Context.UserLocale.LCID);
5.  给出错误提示,终止流程:
// 创建一个交互提示错误对象,并设置错误来源,相互隔离KDInteractionException ie = new KDInteractionException(spensorKey);ie.InteractionContext.InteractionFormId = FormIdConst.BOS_K3Displayer; // 提示信息显示界面ie.InteractionContext.K3DisplayerModel = model; // 提示内容ie.InteractionContext.IsInteractive = true; // 是否需要交互throw ie; // 抛出错误,终止流程


0 0
原创粉丝点击