Please post your DAC definition and a basic version of your Graph
using System;
using PX.Data;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.Data.BQL.Fluent;
using PX.Objects.CS;
namespace Assainissement
{
[Serializable]
[PXCacheName("Sanitation Customer")]
public class SanitationCustomer : IBqlTable
{
#region ClientID
[PXDBIdentity(IsKey = true)]
[PXUIField(DisplayName = "Client ID")]
[PXParent(typeof(Select<SanitationCustomer, Where<SanitationCustomer.clientID, Equal<Current<SanitationCustomer.clientID>>>>))]
[PXSelector(
typeof(Search<SanitationCustomer.clientID>),
typeof(SanitationCustomer.clientID),
typeof(SanitationCustomer.name),
SubstituteKey = typeof(SanitationCustomer.clientID),
DescriptionField = typeof(SanitationCustomer.name)
)]
public virtual int? ClientID { get; set; }
public abstract class clientID : PX.Data.BQL.BqlInt.Field<clientID> { }
#endregion
#region BreweryID
[PXInt]
[PXUIField(DisplayName = "Selected BreweryID", Visibility = PXUIVisibility.Visible)]
[PXDBDefault(typeof(SanitationCustomer.clientID), PersistingCheck = PXPersistingCheck.Nothing)]
public virtual int? BreweryID { get; set; }
public abstract class breweryID : PX.Data.BQL.BqlInt.Field<breweryID> { }
#endregion
#region Name
[PXDBString(80, IsUnicode = true)]
[PXUIField(DisplayName = "Name")]
public virtual string Name { get; set; }
public abstract class name : PX.Data.BQL.BqlString.Field<name> { }
#endregion
#region Address
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "Address")]
public virtual string Address { get; set; }
public abstract class address : PX.Data.BQL.BqlString.Field<address> { }
#endregion
#region City
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "City")]
public virtual string City { get; set; }
public abstract class city : PX.Data.BQL.BqlString.Field<city> { }
#endregion
#region PostalCode
[PXDBString(10, IsUnicode = true)]
[PXUIField(DisplayName = "Postal Code")]
public virtual string PostalCode { get; set; }
public abstract class postalCode : PX.Data.BQL.BqlString.Field<postalCode> { }
#endregion
#region Phone
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "Phone")]
public virtual string Phone { get; set; }
public abstract class phone : PX.Data.BQL.BqlString.Field<phone> { }
#endregion
#region Email
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "Email")]
public virtual string Email { get; set; }
public abstract class email : PX.Data.BQL.BqlString.Field<email> { }
#endregion
#region EmailPreference
[PXDBBool]
[PXUIField(DisplayName = "Notification par courriel")]
public virtual bool? EmailPreference { get; set; }
public abstract class emailPreference : PX.Data.BQL.BqlBool.Field<emailPreference> { }
#endregion
#region Status
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "Status")]
[PXStringList(new string[] { "Ouvert", "Fermé définitivement", "Fermé temporairement", "Rénovation", "Saisonnier", "Lignes non utilisées" }, new stringt] { "Ouvert", "Fermé définitivement", "Fermé temporairement", "Rénovation", "Saisonnier", "Lignes non utilisées" })]
public virtual string Status { get; set; }
public abstract class status : PX.Data.BQL.BqlString.Field<status> { }
#endregion
}
}
using PX.Data;
using PX.Data.BQL.Fluent;
namespace Assainissement
{
public class ClientSanitationMaint : PXGraph<ClientSanitationMaint, SanitationCustomer>
{
public PXSelect<SanitationCustomer> SanitationCustomers;
public PXSave<SanitationCustomer> Save;
public PXCancel<SanitationCustomer> Cancel;
protected virtual void _(Events.RowInserted<SanitationCustomer> e)
{
if (e.Row != null)
{
PXTrace.WriteInformation($"RowInserted: ClientID = {e.Row.ClientID}");
}
}
}
}
Try replacing ClientID with this:
#region ClientID
[PXDBIdentity(IsKey = true)]
[PXUIField(DisplayName = "Client ID")]
[PXSelector(
typeof(Search<SanitationCustomer.clientID>),
typeof(SanitationCustomer.clientID),
typeof(SanitationCustomer.name),
DescriptionField = typeof(SanitationCustomer.name)
)]
public virtual int? ClientID { get; set; }
public abstract class clientID : PX.Data.BQL.BqlInt.Field<clientID> { }
#endregion
Thank you man! Worked like a charm!
I’m not certain which thing was doing it, but ePXParent]
is for associating detail records with master records, and since you don’t have a surrogate key, you don’t need to specify SubstituteKey
.