Замените флажок на раскрывающийся список Да / Нет в Acumatica - PullRequest
0 голосов
/ 18 января 2020

Добрый день

У меня на странице отгрузки установлен флажок "Специальные ярлыки".

Клиент хочет, чтобы поле отображалось как раскрывающийся список Да / Нет или что-то в этой строке. Это возможно?

1 Ответ

1 голос
/ 19 января 2020

Я думаю, вы могли бы справиться с этим двумя способами:

Вариант 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>
...