先执行表单再执行操作

最近有遇到一个需求:客户在单据表单/列表打开一个动态表单,做用户二次登录效验,效验完成后去执行某些操作,由于操作服务插件不能打开动态表单,所以分为表单插件和操作服务插件分开进行,由于打开动态表单是异步得,所以会出现在你打开动态表单得时候,你的操作服务插件已经在执行或者已经执行完了,就与客户需求冲突,从而给出以下
解决方法:在表单插件调的之前你要先设置e.Cancel=true以取消本次操作,然后再验证二次密码OK后,再次触发同样操作,注意第二次触发操作时要加标记,以便表单插件的BeforeDoOpe...事件放过
示例:
/// <summary>
/// 主菜单单击事件
/// </summary>
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.Equals("按钮标识"))
{
e.Cancel = true;//先取消当前操作,执行表单/列表逻辑
int Get = Submit(this.Model.GetValue("FBILLNO").ToString());
int Voucher = FindVoucherForPayBill(this.Model.GetValue("FBILLNO").ToString());//查询单据是否生成凭证
if (GetSubmitCBS > 0)
{
if (Voucher > 0)
{
DynamicFormShowParameter formpa = new DynamicFormShowParameter();
formpa.FormId = "动态表单标识";
this.View.ShowForm(formpa, delegate (FormResult result)
{
//定义接收值,转换成(DynamicObjectCollection)类型
string returnData = result.ReturnData.ToString();
//如果不为空,执行
if (returnData != null)
{
string[] sgin = returnData.Split(';');
string zh = sgin[0];
string mm = ConfidentialDataSecurityUtil.CipherText(sgin[1]);//调用系统密码加密
LoginInfo info = new LoginInfo();
info.Username = zh;
info.Password = mm;
LoginResult results = LoginServiceHelper.CheckLoginInfo(this.Context, info);//二次效验
if (string.IsNullOrEmpty(results.Message))
{
this.View.ShowMessage("是否确操作", MessageBoxOptions.YesNo, ret =>
{
if (ret == MessageBoxResult.No)
{
先执行表单再执行操作
最近有遇到一个需求:客户在单据表单/列表打开一个动态表单,做用户二次登录效验,效验完成后去执行某些操作,由于操作服务插件不能打开动...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



