电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开-列表批改功能实现

来源:金蝶云社区作者:金蝶2024-09-167

二开-列表批改功能实现

一,需求

    在列表上实现批量修改选定单据的修改人,创建人等数据信息,修改选定数据行单据的所有字段类型为用户的字段。

 

二,实现方式  

      新增一个动态表单,将其作为批改按钮点击事件的弹出框, 同时通过插件获取选定源单的元数据,筛选出所有字段类型为user的字段,作为动态表单上下拉列表的动态数据构建,并且 在动态表单上设置一个基础资料为人员的基础资料。添加返回数据按钮,返回对应修改数据到父表单,更新数据库。对应的添加方式如下附件-111.doc

     也可参照对应官方资料 https://wenku.my7c.com/article/360921550578870784?productLineId=1&isKnowledge=2

三,实现代码

    C#源代码如下

using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;

namespace BL.K3.Plugln.APP.List
{
    /// <summary>
    /// 列表测试插件(挂载需要配置的列表插件)
    /// </summary>
    [Description("自定义列表插件-打开动态表单"), HotUpdate]
    public class OpenForm:AbstractListPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            //获取列表的选中行
            if (e.BarItemKey.EqualsIgnoreCase("tbUpdatePerson"))
            {
                var lv = this.View as IListView;
                if (lv == null) { return; }
                var selectedRows = lv.SelectedRowsInfo;
                if (selectedRows == null || selectedRows.Count == 0)
                {
                    this.View.ShowMessage("当前没有行被选中!");
                    return;
                }
                Dictionary<string, string> indexs = new Dictionary<string, string>();  
                string name="";
                string FieldKey = "";
                for (int j = 0; j < selectedRows[0].FieldValues.Keys.Count; j++)
                {                 
                    FieldKey = selectedRows[0].FieldValues.Keys.ElementAt(j).ToString();
                    for (int i = 0; i < selectedRows.Count; i++)
                    {
                        name = name == "" ? " " + selectedRows[i].FieldValues.Where(q => q.Key == FieldKey).First().Value.ToString() : name + "," + selectedRows[i].FieldValues.Where(q => q.Key == FieldKey).First().Value.ToString();                       
                    }
                    indexs.Add(FieldKey, name);
                    name = "";
                }                                            
                DynamicFormShowParameter dynamicFormShowParameter = new DynamicFormShowParameter();
                //要打开的动态表单Id
                dynamicFormShowParameter.FormId = "QPUB_SCDD";
                //弹出动态表单
                this.View.ShowForm(dynamicFormShowParameter, result =>
                {
                    if (result != null && result.ReturnData != null && result.ReturnData is List<Tuple<string, string>>)
                    {
                        //关闭窗体返回值
                        var tuple = result.ReturnData as List<Tuple<string, string>>;
                        //初始化SQL语句
                        string SQL = "";
                            //修改选中单据的数据
                        for (int k = 0; k < indexs.Count; k++)
                        {
                            if (tuple[4].Item2.ToUpper() == indexs.Keys.ElementAt(k).ToUpper())
                            {
                                SQL = string.Format("/*dialect*/UPDATE {0} SET {1} = '{2}'  WHERE {3} in ({4})", tuple[0].Item2, tuple[1].Item2, tuple[2].Item2, tuple[3].Item2,indexs.Values.ElementAt(k));
                                DBUtils.Execute(this.Context, SQL);
                                this.View.Refresh();
                            }
                        }
                    }
                });
            }
        }
}           
    [Description("自定义动态表单插件-返回修改数据"), HotUpdate]
    public class ComboList : AbstractDynamicFormPlugIn
    {
        public override void OnInitialize(InitializeEventArgs e)
        {
            base.OnInitialize(e);
            BindComboField();
        }
        /// <summary>
        /// 设置下拉框数据
        /// </summary>
        public void BindComboField()
        {
            var enumList = GetEnumItems(this.Context);
            //设置下拉框标识
            var comboList = this.View.GetFieldEditor<ComboFieldEditor>("F_BL_UpName", 0); 
            if (comboList != null)
            {
                //添加下拉框内容
                comboList.SetComboItems(enumList);
            }
        }
        private List<EnumItem> GetEnumItems(Context ctx)
        {            
            var enumList = new List<EnumItem>();            
            // 获取对应单据的元数据
            var parentid = this.View.ParentFormView.BillBusinessInfo.GetForm().Id;
            var billMeta = MetaDataServiceHelper.GetFormMetaData(ctx, parentid);
            var obj2 = billMeta.BusinessInfo;           
            //获取基础资料类型为 SEC_User
            va

二开-列表批改功能实现

一,需求 在列表上实现批量修改选定单据的修改人,创建人等数据信息,修改选定数据行单据的所有字段类型为用户的字段。 二,实现方式...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信