#acumatica
#acumatica
Вопрос:
мы добавили некоторые дополнительные параметры статуса в поле статуса на экране обращений, используя шаги автоматизации, и это работает так, как ожидалось. Теперь наше требование — отображать параметры статуса в алфавитном порядке, отсортированном по возрастанию. Может кто-нибудь, пожалуйста, подсказать нам, как этого добиться.
Мы находимся в Acumatica 2019 R2
public class SelectableDataTypes : PXStringListAttribute
{
public string[] AllowedLabels = new string[]
{
"A","B","C"
};
public string[] AllowedValues = new string[]
{
"ValueA","ValueB","ValueC"
};
}
protected virtual void CRCase_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected BaseEvent)
{
BaseEvent?.Invoke(sender, e);
CRCase doc = e.Row as CRCase;
if (doc == null)
return;
PXStringListAttribute.SetList<CRCase.status>(Base.Case.Cache, null, new SelectableDataTypes().AllowedValues, new SelectableDataTypes().AllowedLabels);
}
Ответ №1:
Я не уверен, есть ли способ просто «сортировать», но я никогда не пытался это сделать. Также стоит отметить, что этот метод требует программирования изменения списка, а не использования шагов автоматизации, поэтому добавлять записи в список не так просто, но гораздо более управляемо.
Вы можете переопределить параметры в том порядке, в котором вы хотите, чтобы они отображались, почти так же, как я создаю динамические списки, если это соответствует вашим целям. В этом примере предполагается, что у вас есть сообщения, определенные для каждой метки, и класс с каждым значением, определенным в списке.
Создайте класс, который наследует от PXStringListAttribute, и определите массив строк для AllowedLabels и один для AllowedValues . Включите нужные параметры, отсортированные в нужном порядке. Для этого примера мы предположим, что это определено в классе с именем MySelectableData .
public class SelectableDataTypes : PXStringListAttribute
{
public string[] AllowedLabels = new string[]
{
Messages.FieldLabelA,
Messages.FieldLabelB,
Messages.FieldLabelC,
Messages.FieldLabelD,
Messages.FieldLabelE,
Messages.FieldLabelF,
};
public string[] AllowedValues = new string[]
{
DataValues.ValueA,
DataValues.ValueB,
DataValues.ValueC,
DataValues.ValueD,
DataValues.ValueE,
DataValues.ValueF,
};
}
Опять же, поскольку ваша цель — отсортировать выбранные элементы, обязательно перечислите их в отсортированном порядке.
Если список динамический, поместите следующее (с логикой для переключения между списками) в событие RowSelected. Если он статичен для страницы (что более вероятно в описанном вами случае), поместите его в метод инициализации для страницы.
PXStringListAttribute.SetList<MyDAC.myField>(
MyView.Cache,
null,
new MySelectableData.SelectableDataTypes().AllowedValues,
new MySelectableData.SelectableDataTypes().AllowedLabels
);
SetList в PXStringListAttribute позволит вам переопределить список, как показано здесь, заменив ваши пользовательские параметры на ранее определенные параметры.