首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于客户选择的联系人查找

基于客户选择的联系人查找
EN

Stack Overflow用户
提问于 2017-02-14 14:09:13
回答 2查看 372关注 0票数 0

我需要在screen (SO301000)中创建一个联系人查找。我已经创建了用户定义的自定义字段如下。我是列出所有的联系人,但它不是刷新的基础上选择客户。我是否需要为CustomerID编写任何事件来刷新这些联系人查找?有人知道吗?

代码语言:javascript
复制
[PXDBInt]
[PXUIField(DisplayName = "Contact")]
[PXSelector(typeof(Search2<Contact.contactID,
	LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>>),
	DescriptionField = typeof(Contact.displayName), Filterable = true, DirtyRead = true)]
[PXRestrictor(typeof(Where<Contact.isActive, Equal<True>>), PX.Objects.CR.Messages.ContactInactive, typeof(Contact.displayName))]
[PXDBChildIdentity(typeof(Contact.contactID))]
public virtual int? UsrCustContactID { get; set; }
public abstract class usrCustContactID : IBqlField { }

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-14 16:14:24

您缺少了子句,您需要使用BAccount2而不是BAccountSOOrderEntry图具有用Vendor DAC定义的数据视图,该视图首先/在BAccount之前初始化,而框架将以Vendor DAC代替。为了防止这种情况,您需要在BQL中使用BAccount2 DAC。

代码语言:javascript
复制
    using System;
    using PX.Data;
    using PX.Objects.SO;
    using PX.Objects.CR;

    namespace DemoPkg
    {
        public class SOOrderPXExt : PXCacheExtension<SOOrder>
        {
            #region UsrContactID

            public abstract class usrContactID : IBqlField { }

            [PXDBInt()]
            [PXUIField(DisplayName = "Contact", Visibility = PXUIVisibility.Visible)]
            [PXSelector(typeof(Search2<Contact.contactID,
                LeftJoin<BAccount2, On<BAccount2.bAccountID, Equal<Contact.bAccountID>>>>),
                DescriptionField = typeof(Contact.displayName), Filterable = true, DirtyRead = true)]
            [PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
            [PXFormula(typeof(Default<CRCase.customerID>))]
            [PXRestrictor(typeof(Where<Contact.contactType, NotEqual<ContactTypesAttribute.bAccountProperty>,
                    And<Where<BAccount2.bAccountID, Equal<Current<SOOrder.customerID>>,
                            Or<Current<SOOrder.customerID>, IsNull>>>>), PX.Objects.CR.Messages.ContactBAccountDiff)]
            [PXRestrictor(typeof(Where<Contact.isActive, Equal<True>>), PX.Objects.CR.Messages.ContactInactive,
                          typeof(Contact.displayName))]
            public virtual Int32? UsrContactID { get; set; }

            #endregion
        }
    }

并确保在aspx中将AutoRefresh设置为true,用于此字段的PXSelector控件。

票数 1
EN

Stack Overflow用户

发布于 2017-02-14 14:42:36

我看到您的选择器中没有基于给定客户的where条件。尝试更新你的选择器来匹配这样的东西..。

代码语言:javascript
复制
[PXSelector(typeof(Search2<Contact.contactID,
    LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>,
    Where<BAccount.bAccountID, Equal<Current<SOOrder.customerID>>>>),
DescriptionField = typeof(Contact.displayName), Filterable = true, DirtyRead = true)]

在您的页面中还要确保您的选择器中有AutoRefresh="true“。

示例:

代码语言:javascript
复制
<px:PXSelector ID="edWeightUOM" runat="server" 
    DataField="WeightUOM" Size="S" AutoRefresh="true" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42228334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档