2016-02-09 2 views
0

Я пытаюсь настроить настройку, которая будет динамически отображать значения в серии полей с помощью оператора switch.Заявление о выводе для значения поля

Если мы сосредоточимся на одном поле У меня есть список строк

public static class SMSPlans 
{ 
public const string A = "A"; 
public const string B = "B"; 
public const string C = "C"; 
public const string Z = "Z"; 
} 

[PXDBString(2, IsUnicode = true)] 
[PXDefault(SMSPlans.Z)] 
[PXUIField(DisplayName = "SMS Plan Selected")] 
[PXStringList(
new string[] 
{ 
SMSPlans.A, 
SMSPlans.B, 
SMSPlans.C, 
SMSPlans.Z 
}, 
new string[] 
{ 
"Plan A", 
"Plan B", 
"Plan C", 
"No Text Plan" 
})] 

Я хотел бы, когда это поле установлено в любой из допустимых значений заполнения ряда полей с соответствующими фиксированными значениями, как показано на изображение ниже (0 является значением по умолчанию в настоящее время будет отображаться, если выбран какой-либо план)

Sample Image

Я планировал использовать функции формул и с помощью переключателя заявление, чтобы установить мое желаемое значение, которое будет выглядеть

[PXFormula(null,typeof(Switch<Case<Where<Current<UsrMPSMSPlanSelected, Equal<SMSPlans.A>>,0>))] 

я застрял однако на:

  1. Как мне нужно использовать _RowSelect() или другие обработчики событий
  2. Что делать, если какое-либо значение будет храниться в базе данных для этих полей, назначенных переключатель Постулаты
  3. наконец этот переключатель структурированы правильно, так как он в настоящее время не работает

ответ

0

F что я могу сказать, что у вас есть несколько способов справиться с этим.

1) С тегами атрибутов PXFormula - определение вашего коммутатора в основном правильное в примере выше, но в зависимости от того, где у вас это, само определение PXFormula неверно. Я бы поставил тег PXFormula на поля, которые необходимо обновить.

Например, если поле UsrMinText использовать следующее:

[PXFormula(typeof(Switch<Case<Where<UsrMPSMSPlanSelected,Equal<SMSPlans.A>>,{value if true},{value if false or more case statements}))] 

2) Лично для этого типа настройки я использовал бы реальный метод события в BLC, чтобы сделать это. Хорошим примером этого является справочное руководство по событиям.

protected void Batch_ManualStatus_FieldUpdating(PXCache sender, PXFieldUpdatingEventArgs e) 
{ 
    Batch batch = (Batch)e.Row; 
    if (batch != null && e.NewValue != null) 
    { 
     switch ((string)e.NewValue) 
     { 
     case "H": 
      batch.Hold = true; 
      batch.Released = false; 
      batch.Posted = false; 
      break; 
     case "B": 
      batch.Hold = false; 
      batch.Released = false; 
      batch.Posted = false; 
      break; 
     case "U": 
      batch.Hold = false; 
      batch.Released = true; 
      batch.Posted = false; 
      break; 
     case "P": 
      batch.Hold = false; 
      batch.Released = true; 
      batch.Posted = true; 
      break; 
     } 
    } 
} 

В любом методе значение, которое будет храниться в базе данных, что вы указать, либо в {True,}/{FALSE} значения для PXFormula или значений, указанных в фактических методы переключения.

Важно помнить, что порядок полей в DACS важен. Я читал информацию об обучении и справочники для получения дополнительной информации об этом.

Смежные вопросы