二开案例.表单插件.动态刷新列表

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.表单插件.动态刷新列表

【应用场景】

将列表嵌入到动态表单的某个面板中,在动态表单上,动态刷新列表。


【案例演示】

采购订单,将物料列表嵌入到明细页签的面板中,新增基础资料字段,基础资料类型绑定物料,当该基础资料字段的值发生变化时,以当前值作为过滤条件,动态刷新物料列表。


【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【表单插件】动态刷新列表
    /// </summary>
    [Description("【表单插件】动态刷新列表"), HotUpdate]
    public class RefreshListFormPlugIn : AbstractDynamicFormPlugIn
    {
        /// <summary>
        /// 已经打开的列表视图的页面ID
        /// </summary>
        private string pageId = "";
        public override void DataChanged(DataChangedEventArgs e)
        {
            base.DataChanged(e);
            if (e.Field.Key.EqualsIgnoreCase("F_Jac_Base"))
            {
                var obj = this.Model.GetValue(e.Field.Key) as DynamicObject;
                var filterString = obj != null ? string.Format("FMATERIALID=" + obj[0]) : "1=0";
                if (string.IsNullOrWhiteSpace(pageId))
                {
                    // 首次打开物料列表
                    pageId = Guid.NewGuid().ToString();
                    var showParameter = new ListShowParameter();
                    showParameter.ParentPageId = this.View.PageId;
                    showParameter.PageId = pageId;
                    showParameter.FormId = "BD_MATERIAL";
                    showParameter.OpenStyle.TagetKey = "F_Jac_Panel";
                    showParameter.OpenStyle.ShowType = ShowType.InContainer;
                    // 强制指定过滤条件
                    var filterParameter = new ListRegularFilterParameter();
                    filterParameter.Filter = filterString;
                    //filterParameter.FilterChanged = true;
                    showParameter.ListFilterParameter = filterParameter;
                    this.View.ShowForm(showParameter);
                }
                else
                {
                    // 获取已经打开的物料列表
                    var listView = (IListView)this.View.GetView(pageId);
                    // 强制指定过滤条件
                    listView.Model.FilterParameter.FilterString = filterString;
                    listView.RefreshByFilter();
                    this.View.SendAynDynamicFormAction(listView);
                }
            }
        }
    }
}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,新增一个基础资料字段,基础资料类型设置为物料,分录页签控件新增一个页签,新增页签上新增一个面板,停靠属性设置为充满,注册表单插件,保存元数据,开发完毕。



【功能验证】

<1>登录业务站点,打开采购订单新增界面,物料过滤字段上,输入不同的物料,界面下方的物料列表将同步刷新数据。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表单插件.动态刷新列表

【应用场景】将列表嵌入到动态表单的某个面板中,在动态表单上,动态刷新列表。【案例演示】采购订单,将物料列表嵌入到明细页签的面板中,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息