Я думаю, вы могли бы справиться с этим двумя способами:
Вариант 1 (PXDropdown):
Создать строковое поле для раскрывающегося списка Да / Нет и использовать его значение для установки логического значения. поле:
#region ActiveString
public abstract class activeString : PX.Data.IBqlField
{
}
[PXString]
[PXDefault("false")]
[YesNo.List()]
[PXUIField(DisplayName = "Active")]
public virtual string ActiveString { get; set; }
#endregion
#region Active
public abstract class active : PX.Data.IBqlField
{
}
[PXDBBool]
[PXDefault(true)]
[PXUIField(DisplayName = "Active", Visible = false, Enabled = false)]
public virtual bool? Active {
get { return Convert.ToBoolean(this.ActiveString ?? "false"); }
set { value = Convert.ToBoolean(this.ActiveString ?? "false"); }
}
#endregion
Раскрывающаяся разметка ASPX:
<px:PXDropdown ID="edActive" runat="server"
DataField="ActiveString" Size="XS" >
<AutoCallBack Command="Save" Target="form">
</AutoCallBack>
</px:PXDropdown>
Опция 2 (PXSelector):
Создать небольшую таблицу в базе данных для селектора, например :
CREATE TABLE [dbo].[UsrTrueFalse]
(
[BoolValue] bit NOT NULL,
[TextValue] [varchar](3) NOT NULL
)
и создайте DA C над таблицей:
[System.SerializableAttribute()]
public class UsrTrueFalse : IBqlTable
{
#region BoolValue
public abstract class boolValue : PX.Data.IBqlField
{
}
[PXDBBool]
[PXUIField(DisplayName = "Bool Value")]
public virtual bool? BoolValue { get; set; }
#endregion
#region TextValue
public abstract class textValue : PX.Data.IBqlField
{
}
[PXDBString(3)]
[PXUIField(DisplayName = "Text Value")]
public virtual string TextValue { get; set; }
#endregion
}
, а затем добавьте атрибут PXSelector в свое логическое поле:
#region Active
public abstract class active : PX.Data.IBqlField
{
}
[PXDBBool]
[PXDefault(true)]
[PXSelector(typeof(Search<UsrTrueFalse.boolValue>),
DescriptionField = typeof(UsrTrueFalse.textValue))]
[PXUIField(DisplayName = "Active")]
public virtual bool? Active { get; set; }
#endregion
Разметка PXSelector ASPX:
<px:PXSelector ID="edActive" runat="server" DataField="Active" DataSourceID="ds" Size="XS" DisplayMode="Text">
<AutoCallBack Command="Save" Target="form">
</AutoCallBack>
</px:PXSelector>