
**【应用场景】**
二开模拟系统【套打导出所选分录】功能,适用于`PT-146939 [8.1.0.20230309]`版本之前的系统参考。
**【案例演示】**
<1>编写账表表单插件,代码如下。
``` csharp
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace Kingdee.BOS.PlugInTest
{
/// <summary>
/// 【列表插件】按选中分录导出
/// </summary>
[Description("【列表插件】按选中分录导出"), HotUpdate]
public class PrintExportSelectedEntityListPlugIn : AbstractListPlugIn
{
/// <summary>
/// 主菜单点击后处理事件
/// </summary>
/// <param name="e"></param>
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
PrintExportSelected printExportSelected = new PrintExportSelected();
var dynView = this.View as IDynamicFormViewService;
if (e.BarItemKey.EqualsIgnoreCase("tbPrintExportSelectedEntity"))
{
// 获取选中行
ListSelectedRowCollection selectedRows = this.ListView.SelectedRowsInfo;
if (selectedRows == null || selectedRows.Count == 0)
return;
// 获取分录所属实体和分录主键名称
string entryEntityKey = string.Empty;
List<FilterEntity> selectEntitnes = this.ListView.Model.FilterParameter.SelectedEntities;
var entryEntity = selectEntitnes.FirstOrDefault(x => x.EntityType == Core.Enums.BOSEnums.Enum_EntityType.Entity);
if (entryEntity != null)
{
entryEntityKey = entryEntity.Key;
printExportSelected.EntryEntityKey = entryEntityKey;
Entity entity = this.View.BillBusinessInfo.GetEntity(entryEntityKey);
if (entity == null)
return;
printExportSelected.EntryPkFieldName = entity.EntryPkFieldName;
}
// 没有单据体信息,触发套打导出按钮
if (string.IsNullOrWhiteSpace(entryEntityKey))
{
dynView.MainBarItemClick("tbPrintExport");
return;
}
// 获取选中分录内码
foreach (ListSelectedRow selectedRow in selectedRows)
{
printExportSelected.PrimaryKeyValues.Add(selectedRow.EntryPrimaryKeyValue);
}
// 放入页面缓存
this.View.Session["PrintExportSelected"] = printExportSelected;
// 触发套打导出按钮
dynView.MainBarItemClick("tbPrintExport");
return;
}
}
/// <summary>
/// 干预套打数据包
/// </summary>
/// <param name="e"></param>
public override void OnPrepareNotePrintData(PreparePrintDataEventArgs e)
{
base.OnPrepareNotePrintData(e);