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

单据列表点击超链接实现下载或预览多选附件(文件服务)附件

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

单据列表点击超链接实现下载或预览多选附件(文件服务)附件

【应用场景】

单据列表点击超链接实现下载或预览多选附件(文件服务)附件


【注意事项】

PT-148001 [8.1.0.20230420] 版本开始支持


【案例演示】

多选附件(文件服务)字段在列表上显示对应文件名的超链接,点击后进行下载或预览


【实现步骤】

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.FileServer;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.JSON;
using Kingdee.BOS.ServiceHelper.FileServer;
using Kingdee.BOS.Util;
using Kingdee.BOS.Web.DynamicForm;

namespace DemoPlugin
{
    [Description("单据列表点击预览多选附件-列表插件"), HotUpdate]
    public class BillListAttachmentsPreviewPlugin : AbstractListPlugIn
    {
        /// <summary>
        /// 这里换成自己实际的“多选附件(文件服务)的标识
        /// </summary>
        private const string _attachmentsFieldKey = "FEntityAttachments";

        public override void ListCreateColumns(ListCreateColumnsEventArgs e)
        {
            base.ListCreateColumns(e);

            var attachmentNameCol = e.Columns
                .Select(c => c as JSONObject)
                .FirstOrDefault(c => _attachmentsFieldKey.EqualsIgnoreCase(c["dataIndex"].GetString()));
            // 超链接
            attachmentNameCol["xColDspCtrlType"] = "kdlinkbutton";
        }

        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);

            PraseLinkCommand();
        }

        public override void EntryButtonCellClick(EntryButtonCellClickEventArgs e)
        {
            base.EntryButtonCellClick(e);
            if (e.FieldKey.EqualsIgnoreCase(_attachmentsFieldKey))
            {
                var fileInfoJson = this.ListView.CurrentSelectedRowInfo.DataRow[_attachmentsFieldKey];
                AttachmentsInfo[] fileInfo = JsonUtil.DeserializeObject<AttachmentsInfo[]>(fileInfoJson.GetString());

                int clickIndex;
                if (fileInfo != null
                    && e.ExtParameters.TryGetValue("clickChildIndex", -1, out clickIndex))
                {
                    if (clickIndex >= 0 && clickIndex < fileInfo.Length)
                    {
                        //DownloadFile(fileInfo, clickIndex);

                        PreviewFile(fileInfo, clickIndex);
                    }
                }
            }
        }

        private void PreviewFile(AttachmentsInfo[] fileInfo, int clickIndex)
        {
            var currentFile = fileInfo[clickIndex];

            // v9以前版本
            //var method = typeof(DynamicWebFormView).GetMethod("FilePreviewForAttachmentField", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            //method.Invoke(this.Vi

单据列表点击超链接实现下载或预览多选附件(文件服务)附件

【应用场景】单据列表点击超链接实现下载或预览多选附件(文件服务)附件【注意事项】PT-148001 [8.1.0.20230420] 版本开始支持【案例演...
点击下载文档文档为doc格式

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

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