C# Acumatica动态多选下拉列表
我有一个屏幕条目来存储事务数据,我想使用dynamic withmultiselect combobox来选择状态,状态数据取自表,但当选择某些数据状态时,存储的数据量与所选的不匹配 我已经尝试了以下代码,但它对我不起作用C# Acumatica动态多选下拉列表,c#,erp,acumatica,C#,Erp,Acumatica,我有一个屏幕条目来存储事务数据,我想使用dynamic withmultiselect combobox来选择状态,状态数据取自表,但当选择某些数据状态时,存储的数据量与所选的不匹配 我已经尝试了以下代码,但它对我不起作用 public class StatusMultiStringListAttribute : PXStringListAttribute { public StatusMultiStringListAttribute() : base() {
public class StatusMultiStringListAttribute : PXStringListAttribute
{
public StatusMultiStringListAttribute() : base()
{
PXResultset<StatusTable> rslt = PXSelect<StatusTable>.Select(new PXGraph());
List<string> values = new List<string>();
List<string> labels = new List<string>();
foreach (PXResult<StatusTable> item in rslt)
{
BSMTStatus e = (StatusTable)item;
values.Add(e.StatusID);
labels.Add(e.Description);
}
this._AllowedValues = values.ToArray();
this._AllowedLabels = labels.ToArray();
MultiSelect = true;
}
}
公共类状态MultistringListAttribute:PXStringListAttribute
{
公共状态MultistringListatAttribute():base()
{
PXResultset rslt=PXSelect.Select(新建PXGraph());
列表值=新列表();
列表标签=新列表();
foreach(rslt中的PXResult项)
{
BSMTStatus e=(状态表)项;
添加(例如StatusID);
标签。添加(如说明);
}
这._AllowedValues=values.ToArray();
这._AllowedLabels=labels.ToArray();
MultiSelect=true;
}
}
还有其他解决办法吗,对不起,我的英语不好,谢谢。我注意到你在上的评论,看到你发布了一些附加代码。根据您的示例代码,我发现了两个问题:
首先,从StatusTable DAC加载的值包含未修剪的尾随空格。您尚未提供StatusTable DAC的声明,但可以从屏幕截图中安全地假设此字段的IsFixed
属性设置为true
。通过这些设置,系统将在值的末尾添加空白。为了节省目标字段中的空间,我建议在构造函数代码中添加Trim():
foreach (PXResult<StatusTable> item in rslt)
{
BSMTStatus e = (StatusTable)item;
values.Add(e.StatusID.Trim()); //Remove any white-space
labels.Add(e.Description);
}
请提供目标字段(状态)的确切属性集,好吗?我怀疑这块地不够大,容纳不下所有的贵重物品。我还注意到字段中的值在末尾包含额外的空格。
[PXDBString(255)]
[PXDefault]
[PXUIField(DisplayName = "Status")]
[StatusStringList]
public virtual string Status