Acumatica动态多选下拉

Acumatica动态多选下拉

问题描述:

我有一个画面条目存储交易数据,我想用动态的多选组合框选择状态和状态数据从拍摄,但是当一些数据状态选择存储的数据的量不不匹配已被选择,Acumatica动态多选下拉

Screen Entry Screenshoot

Database Screenshoot

我有吨拥有以下代码,但对我来说不起作用。

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; 
    } 
} 

有没有其他的解决办法,抱歉我的英文不好,谢谢。

+0

可否请你提供确切的集合为目标字段(状态)的属性?我怀疑这个领域不够大,无法适应所有的价值。我还注意到,您的字段中的值在最后包含额外的空格。 – Gabriel

我注意到您对http://asiablog.acumatica.com/2016/03/multiselect-combo-box.html的评论,并看到您发布了一些额外的代码。根据您的示例代码,我发现了两个问题:

首先,您从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); 
} 

其次,当你存储选定值的状态字段不够长,以适应多种选择。它目前被定义为20个字符([PXDBString(20, IsFixed=true)]),甚至假设您删除了空白,您仍然将其限制为4个选项。我建议你将其更改为255,且还去除IsFixed=true因为它并不需要此字段:

[PXDBString(255)] 
[PXDefault] 
[PXUIField(DisplayName = "Status")] 
[StatusStringList] 
public virtual string Status 
+0

感谢您的建议,我的问题得到解决。 – Distor4by

+0

@ Distor4by很酷,感谢您的更新! – Gabriel