如何使 PXAction 和 PXUIFieldAttribute.SetEnabled 工作

How to make PXAction and PXUIFieldAttribute.SetEnabled Work

我不知道为什么我的代码无法运行或可能缺少某些内容。

我正在尝试做的是使用 PXAction 禁用特定字段,当我编译时 运行 这样我的浏览器就会加载到无穷大。

谢谢大家!

这是我的代码

解码器:

 #region RadnomTest
 [PXDBString(20, IsUnicode = true)]
 [PXUIField(DisplayName = "Random Test")]
 public virtual string RadnomTest { get; set; }
 public abstract class radnomTest : BqlString.Field<radnomTest> { }
 #endregion

图表

#region Toggle Readonly
 public PXAction<ClientProfileNames> ReadonlyToggle;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Toggle Read-only")]
protected virtual void readonlyToggle(Events.RowSelected<ClientProfileNames> e)
{
    var row = e.Row;
    PXUIFieldAttribute.SetEnabled<ClientProfileNames.radnomTest>(e.Cache, row, true);

 Actions.PressSave();
}
#endregion

<asp:Content ID="cont1" ContentPlaceHolderID="phDS" Runat="Server">
    <px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%" PrimaryView="ClinetInfosMain" TypeName="OnlyForTesting.Graph.Profile.ClientProfileNamesMaint">
        <CallbackCommands>
        </CallbackCommands>
    </px:PXDataSource>
</asp:Content>
<asp:Content ID="cont2" ContentPlaceHolderID="phF" Runat="Server">
    <px:PXFormView ID="form" runat="server" DataSourceID="ds" Style="z-index: 100" Width="100%" DataMember="ClinetInfosMain" TabIndex="2900">
        <Template>
            <px:PXLayoutRule runat="server" StartRow="True" StartColumn="True"/>
            <px:PXTextEdit ID="edRadnomTest" runat="server" AlreadyLocalized="False" DataField="RadnomTest" IsClientControl="True">
            </px:PXTextEdit>
        </Template>
        <AutoSize Container="Window" Enabled="True" MinHeight="200" />
    </px:PXFormView>
</asp:Content>

应从 RowSelected 事件设置字段状态,而不是单击按钮等操作的结果。

如果您需要根据另一个字段的值设置启用状态,我建议您检查 PXUIEnabled 属性,它可以让您以声明方式处理此问题:https://asiablog.acumatica.com/2016/11/pxuienabled-and-pxuirequired-attributes.html