Acumatica - Поля не загружаются, когда элемент выбран из PXSelector - PullRequest
0 голосов
/ 30 января 2020

У меня проблемы с загрузкой полей при выборе значения из селектора. Первый экран (Group-Categories) имеет Селектор групп, который отображает описание в текстовом поле и в сетке, где пользователи могут вводить категории и описания Cat. Это работает отлично.

// Group DAC 
[Serializable]
public class INMerchandiseGroup : IBqlTable
{
    #region GroupCD
    [PXDBString(10, IsKey = true, BqlField = typeof(INMerchandiseGroup.groupCD))]    
    [PXUIField(DisplayName = "Group Code", Visibility=PXUIVisibility.SelectorVisible)]
    [PXSelector(typeof(Search<INMerchandiseGroup.groupCD>),
    typeof(INMerchandiseGroup.groupCD),
    typeof(INMerchandiseGroup.description))]
    public virtual string GroupCD { get; set; }
    public abstract class groupCD : PX.Data.BQL.BqlString.Field<groupCD> { }
    #endregion

    #region Description
    [PXDBString(256, IsUnicode = true, BqlField = typeof(INMerchandiseGroup.description))]
    [PXUIField(DisplayName = "Description")]
    public virtual string Description { get; set; }
    public abstract class description : PX.Data.BQL.BqlString.Field<description> { }
    #endregion
}

// Group Graph
public class BPGroupCategoryMaint : PXGraph<BPGroupCategoryMaint, INMerchandiseGroup>
{    
    // Setup for GroupCd in grid 
    #region Category GroupCD
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [PXDBDefault(typeof(INMerchandiseGroup.groupCD))]
    protected virtual void INMerchandiseCategory_GroupCD_CacheAttached(PXCache cache)
    {
    }
    #endregion   

    public PXSelect<INMerchandiseGroup> CurrentGroup;
    public PXSave<INMerchandiseGroup> Save;
    public PXCancel<INMerchandiseGroup> Cancel;

    public PXSelect<INMerchandiseCategory,
    Where<INMerchandiseCategory.groupCD, Equal<Current<INMerchandiseGroup.groupCD>>>>
    GroupCategories;
}

У меня такая же настройка на экране Category-Dept. Пользователь выбирает категорию из селектора, а компакт-диск с описанием и группой Cat должен заполнять текстовые поля, а описание категории и groupcd заполняются только в первый раз. После этого значения в кеше равны нулю. Что я делаю неправильно?

// Category DAC (this is used in the grid of Group screen, and as a record header in Category screen.
[Serializable]
public class INMerchandiseCategory : IBqlTable
{     
    #region CategoryCD
    [PXDBString(10,  IsKey = true, BqlField = typeof(INMerchandiseCategory.categoryCD, InputMask = ">CCCCCCCCCC")]
    [PXUIField(DisplayName = "Category Code")]
    public virtual string CategoryCD { get; set; }
    public abstract class categoryCD : PX.Data.BQL.BqlString.Field<categoryCD> { }       
    #endregion

    #region Description
    [PXDBString(256, IsUnicode = true, BqlField = typeof(INMerchandiseCategory.categoryDescription))]
    [PXUIField(DisplayName = "Category Description")]
    public virtual string CategoryDescription { get; set; }
    public abstract class categoryDescription : PX.Data.BQL.BqlString.Field<categoryDescription> { }
    #endregion

    #region GroupCD
    [PXDBString(10, IsKey = true, BqlField = typeof(INMerchandiseCategory.groupCD) )]
    [PXUIField(DisplayName = "Group Code")]
    public virtual string GroupCD { get; set; }
    public abstract class groupCD : PX.Data.BQL.BqlString.Field<groupCD> { }
    #endregion      
}

// Category Graph
public class BPCategoryDeptMaint : PXGraph<BPCategoryDeptMaint>
{
    [PXMergeAttributes(Method = MergeMethod.Merge)]
    [PXUIField(DisplayName = "Category Code", Visibility=PXUIVisibility.SelectorVisible)]   
    [PXSelector(typeof(Search2<INMerchandiseCategory.categoryCD,
    InnerJoin<INMerchandiseGroup, On<INMerchandiseCategory.groupCD, Equal<INMerchandiseGroup.groupCD>>>>),
    typeof(INMerchandiseCategory.categoryCD),
    typeof(INMerchandiseCategory.categoryDescription),
    typeof(INMerchandiseCategory.groupCD),
    typeof(INMerchandiseGroup.description))]    
    protected virtual void INMerchandiseCategory_CategoryCD_CacheAttached(PXCache cache)
    {

    }

    #region Dept GroupCD
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [PXDefault(typeof(INMerchandiseCategory.groupCD), PersistingCheck = PXPersistingCheck.Nothing)]
    protected virtual void INMerchandiseDept_GroupCD_CacheAttached(PXCache cache)
    {
    }
    #endregion     

    #region Dept CategoryCD
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [PXDefault(typeof(INMerchandiseCategory.categoryCD), PersistingCheck = PXPersistingCheck.Nothing)]
    protected virtual void INMerchandiseDept_CategoryCD_CacheAttached(PXCache cache)
    {
    }
    #endregion     

    public PXSelect<INMerchandiseCategory> CurrentCategory;
    public PXSave<INMerchandiseCategory> Save;
    public PXCancel<INMerchandiseCategory> Cancel;

    public PXSelect<INMerchandiseDept,
    Where<INMerchandiseDept.groupCD, Equal<Current<INMerchandiseCategory.groupCD>>,
    And<INMerchandiseDept.categoryCD, Equal<Current<INMerchandiseCategory.categoryCD>>>>>
    CategoryDepts;            
    }
}

1 Ответ

0 голосов
/ 30 января 2020

Убедитесь, что поле в ASPX имеет атрибут commit = true. Если флаг помечен для фиксации, пользовательский интерфейс отправит обновление на сервер при изменении элемента управления.

...