
【场景】做插入行选单处理
【案例】二开实现,针对采购订单选单采购申请单,针对选中行位置插入关联关系行


```csharp
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DynamicFormPlugIn.BillConvert
{
public class ConstKey
{
public static readonly string Entity = "FPOOrderEntry";
public static readonly string OpParam = "DrawInsertPos";
}
[Kingdee.BOS.Util.HotUpdate]
[System.ComponentModel.Description("记录选中操作时的选中行")]
public class DrawToInsertPos : AbstractBillPlugIn
{
public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
{
if (e.Operation == null)
return;
if (e.Operation.FormOperation == null)
return;
if (!string.Equals(e.Operation.FormOperation.Operation, "Draw", StringComparison.OrdinalIgnoreCase))
return;
int rowIdx = this.View.Model.GetEntryCurrentRowIndex(ConstKey.Entity);
e.Option.SetVariableValue(ConstKey.OpParam, rowIdx);
}
}
[Kingdee.BOS.Util.HotUpdate]
[System.ComponentModel.Description("根据选中位置调整单据体数据包顺序")]
public class ConvertServicePlugIn_DrawToInsertPos : AbstractConvertPlugIn
{
public override void AfterConvert(AfterConvertEventArgs e)
{
int rowIdx = 0;
if (!this.Option.TryGetVariableValue(ConstKey.OpParam, out rowIdx))
return;
if (rowIdx <= 0)
return;
Entity entity = e.TargetBusinessInfo.GetEntity(ConstKey.Entity);
if (entity == null || entity.SeqDynamicProperty == null)
return;
var drawEntityResults = e.Result.FindByEntityKey(ConstKey.Entity);
if (drawEntityResults == null || drawEntityResults.Length <= 0)
return;
int insertLinkSeq = rowIdx+1;
H