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

【应用场景】
单据列表点击超链接实现下载或预览多选附件(文件服务)附件
【注意事项】
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格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



