一种向导式提示语应用实现原创
4人赞赏了该文章
838次浏览
编辑于2020年08月17日 21:07:12
场景需求:
1、根据某种操作正常提示,提示内容需要先后顺序执行某种其他逻辑,如:无法执行该操作,请按下面分步执行,请先执行1、......2、......3、再次执行该操作
2、提示语中含有引导式提示语,如:执行成功,点击下面链接可直接查看执行结果
等其他场景需求,这种简单场景可方便增加用户引导式友好操作,无需实现过多的向导界面,也由于标准产品的提示语中,无法执行在提示语文本中插入链接或者按钮功能,所以需要借助向导式提示语应用功能实现
效果图:
二开插件样例:
public class TestMsgInnerInfoPlugin : AbstractDynamicFormPlugIn { private List<MsgInnerInfo> lstinnerinfo = null; public override void ButtonClick(ButtonClickEventArgs e) { if (e.Key.EqualsIgnoreCase("FBtTestMsg")) { this.lstinnerinfo = new List<MsgInnerInfo>(); this.lstinnerinfo.Add(new MsgInnerInfo("link1", "删除角色001")); this.lstinnerinfo.Add(new MsgInnerInfo("link2", "删除角色002")); this.lstinnerinfo.Add(new MsgInnerInfo("link3", "重新删除用户")); this.View.ShowMessage(new Queue<MsgInnerInfo>(this.lstinnerinfo), "删除[test]用户失败,该用户已被角色001,角色002引用,请先删除角色再选择重新操作", MessageBoxType.Notice); } } public override void MsgInnerControlEvent(MsgInnerControlEventArgs e) { base.MsgInnerControlEvent(e); if (this.lstinnerinfo == null) return; if (e.key.EqualsIgnoreCase("link1") || e.key.EqualsIgnoreCase("link2")) { //这里执行正确逻辑 //最后的提示 MsgInnerInfo linkm = this.lstinnerinfo.Where(x => x.key.EqualsIgnoreCase(e.key)).FirstOrDefault(); this.View.ShowMessage(string.Format("删除{0}成功。", linkm.caption), MessageBoxOptions.OK, new Action<MessageBoxResult>((result) => { if (this.lstinnerinfo != null) { linkm.enabled = true; JSONArray array = new JSONArray(); array.Add(KDObjectConverter.SerializeObject(linkm)); this.View.AddAction("SetMesTipBarInnerControlState", array); this.View.SendDynamicFormAction(this.View); } }), "", MessageBoxType.Advise); } if (e.key.EqualsIgnoreCase("link3")) { var alldel = this.lstinnerinfo.Where(x => !x.key.EqualsIgnoreCase("link3") && !x.enabled); if (alldel.Count() > 0) { this.View.ShowWarnningMessage(string.Format("请先执行{0}操作!", alldel.First().caption)); } else { //这里执行正确逻辑 //最后的提示 MsgInnerInfo linkm = this.lstinnerinfo.Where(x => x.key.EqualsIgnoreCase(e.key)).FirstOrDefault(); this.View.ShowMessage("删除[test]用户成功", MessageBoxOptions.OK, new Action<MessageBoxResult>((result) => { if (this.lstinnerinfo != null) { linkm.enabled = true; JSONArray array = new JSONArray(); array.Add(KDObjectConverter.SerializeObject(linkm)); this.View.AddAction("SetMesTipBarInnerControlState", array); this.View.SendDynamicFormAction(this.View); } }), "", MessageBoxType.Advise); } } } }
附:html5端暂未实现该场景,如需应用场景,内部后续再做支持
推荐阅读