
# 【场景】
针对部分字段,列表不支持字段排序(如仓位),同时不支持列表多选(无法修改返回顺序);
在条码打印中需要按照数据仓位排序打印时无法实现。
# 【案例】
即时库存、条码打印,按照仓位组合值排序
# 【方案】
在条码打印界面(BD_BarCodePrint),配置表单插件,增加一个排序的单据体菜单;对单据体数据包进行排序,排序后打印则按照仓位顺序输出。


```csharp
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
namespace DynamicFormPlugIn.BarCodePrint
{
public class BarcodePlugIn : AbstractBillPlugIn
{
public override void EntryBarItemClick(BarItemClickEventArgs e)
{
base.EntryBarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("CustomSort"))
{
SortEntity();
}
}
private void SortEntity()
{
const string EntityKey = "FEntityToBill";
const string SortField = "FSTOCKLOCID";
EntryEntity entity = View.BillBusinessInfo.GetEntity(EntityKey) as EntryEntity;
if (entity == null)
return;
RelatedFlexGroupField flexField = View.BillBusinessInfo.GetField(SortField) as RelatedFlexGroupField;
if (flexField == null)
return;
BaseDataField bdField = View.BillBusinessInfo.GetField(flexField.RelatedBaseDataFlexGroupField) as BaseDataField;
if (bdField == null)
return;
DynamicObjectCollection rowObjs = View.Model.GetEntit