PXSelector в поле DAC, вызывающее проблемы с фильтром столбца - PullRequest
0 голосов
/ 11 октября 2018

У меня есть DAC, который имеет FK1 для Table1ID из таблицы1 и FK2 для Table2ID из таблицы2.Я добавил PXSelector в эти поля, чтобы вместо понятного номера отображалось понятное имя.Когда пользователь выполняет фильтрацию по Table2ID и идет, чтобы добавить новую запись на экран и переходить от столбца к столбцу для ввода информации, значение столбца Table1ID исчезает.Пользователь может добавить значение обратно в столбец, но я пытаюсь выяснить, почему исчезает.Если я удаляю PXSelector из поданного Table2ID, все работает нормально.PXSelector - это простой выбор с проверкой, является ли IsActive истинным.

   <px:PXGridColumn DataField="AdministrationRouteID" DisplayMode="Text" Width="100px" CommitChanges="True" />
   <px:PXGridColumn DataField="MedicationID" DisplayMode="Text" Width="200px" CommitChanges="True" />


    public abstract class administrationRouteID : PX.Data.IBqlField
    {
    }
    protected int? _AdministrationRouteID;
    [PXDBInt()]
    [PXDefault()]
    [PXSelector(typeof(Search<SsAhAdministrationRoute.administrationRouteID,
        Where<SsAhAdministrationRoute.isActive, Equal<True>>>), DescriptionField = typeof(SsAhAdministrationRoute.name))]
    [PXUIField(DisplayName = "Administration Route")]
    public virtual int? AdministrationRouteID
    {
        get
        {
            return this._AdministrationRouteID;
        }
        set
        {
            this._AdministrationRouteID = value;
        }
    }



    public abstract class medicationID : PX.Data.IBqlField
    {
    }
    protected int? _MedicationID;
    [PXDBInt()]
    [PXDefault()]
    [PXSelector(typeof(Search<SsAhMedication.medicationId,
        Where<SsAhMedication.isActive, Equal<True>>>), DescriptionField = typeof(SsAhMedication.name))]
    [PXUIField(DisplayName = "Medication Name")]
    public virtual int? MedicationID
    {
        get
        {
            return this._MedicationID;
        }
        set
        {
            this._MedicationID = value;
        }
    }

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Убедитесь, что CommitChanges = "true" применяется только к GridColumns, нуждающимся в этой функциональности.Попробуйте удалить CommitChanges = "true" из столбцов селектора, если в этом нет необходимости.SyncPosition = "true" в сетке также может помочь, особенно при переходе от строки к строке во время ввода данных.

0 голосов
/ 12 октября 2018

Похоже, вам просто нужно указать свое поле CD на вашем селекторе, используя свойство SubstituteKey.В приведенном ниже примере предполагается, что SsAhAdministrationRoute.administrationRouteCD - это удобное для пользователя значение CD, связанное со значением ключа SsAhAdministrationRoute.administrationRouteID ID.

[PXSelector(typeof(Search<SsAhAdministrationRoute.administrationRouteID,
        Where<SsAhAdministrationRoute.isActive, Equal<True>>>), 
        DescriptionField = typeof(SsAhAdministrationRoute.name),
        SubstituteKey = typeof(SsAhAdministrationRoute.administrationRouteCD))]
...