二开案例.表单插件.通用进度条
【应用场景】插件执行耗时操作,需要显示进度条,在避免页面响应超时的同时,提供给用户更好的交互体验。
【案例演示】采购订单,新增两个菜单,分别演示真进度条和假进度条的显示效果。
真进度条:进度条的进度按实际设置的值显示。
假进度条:进度条的值每3秒增加10%,增加到99%后不再变化直到操作结束。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.KDThread;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
using System.Threading;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】通用进度条
/// </summary>
[Description("【表单插件】通用进度条"), HotUpdate]
public class ProgressBarFormPlugIn : AbstractDynamicFormPlugIn
{
/// <summary>
/// 主菜单点击事件
/// </summary>
/// <param name="e"></param>
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("tbDo1"))
{
// 用真的进度条
ShowProgressBar(true);
}
if (e.BarItemKey.EqualsIgnoreCase("tbDo2"))
{
// 用假的进度条
ShowProgressBar(false);
}
}
/// <summary>
/// 显示进度条
/// </summary>
/// <param name="userTruePro">是否使用真的进度值</param>
private void ShowProgressBar(bool userTruePro)
{
this.View.ShowProcessForm(formResult => { }, userTruePro, "正在执行xxx");
// 启动线程执行耗时操作,同时更新执行进度
MainWorker.QuequeTask(this.View.Context, () =>
{
try
{
var counter = 30;
for (var x = 1; x < counter; ++x)
{
// TODO
Thread.Sleep(1000);
// 报告下执行进度
var rate = Convert.ToInt32(x * 100 / counter);
this.View.Session["ProcessRateValue"] = rate;
// 进度条界面增加文字提示信息
//this.View.Session["ProcessTips"] = string.Format("任务{0}已处理", x);
}
this.View.ShowMessage("操作已完成。");
}
catch (Exception ex)
{
this.View.ShowErrMessage(ex.Message);
}
finally
{
// 此句必不可少,进度值100时进度条自动关闭
this.View.Session["ProcessRateValue"] = 100;
this.View.SendDynamicFormAction(this.View);
}
}, null);
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,菜单集合新增两个菜单项,注册表单插件,保存元数据,开发完毕。
现在可以登录业务站点,打开采购订单,检验一下通用进度条的显示效果啦。
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.通用进度条
本文2024-09-23 04:18:26发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164470.html