这是一个使用Acumatica框架的复合主键选择器的示例代码:
public class CustomSelectorAttribute : PXSelectorAttribute
{
public CustomSelectorAttribute(Type type) : base(type)
{
this.DescriptionField = typeof(YourDAC.description);
this.SubstituteKey = typeof(YourDAC.keyField);
}
public override void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e, string alias)
{
if (e.ReturnState is PXFieldState state)
{
// 设置选择器的复合主键
state.SelectorMode |= PXSelectorMode.NoAutocomplete | PXSelectorMode.NoMessage;
state.SelectorMode &= ~PXSelectorMode.Searching;
state.SelectorMode |= PXSelectorMode.NoEdit;
}
base.FieldSelecting(sender, e, alias);
}
}
public class YourDAC : PX.Data.IBqlTable
{
// 定义复合主键字段
public class PK : PX.Data.BQL.BqlInt.Field { }
// 定义其他字段
public class keyField : PX.Data.BQL.BqlString.Field { }
public class description : PX.Data.BQL.BqlString.Field { }
// 使用自定义选择器属性
[CustomSelector(typeof(Search2>>>))]
public virtual string KeyField { get; set; }
}
以上示例演示了如何创建一个自定义选择器属性并将其应用于您的DAC类的字段。在FieldSelecting事件中,我们设置了选择器的复合主键,并禁用了自动完成、搜索和编辑模式。