选择网格中的线时的操作

时间:2018-03-19 18:23:11

标签: acumatica

我想在网格中选择一行时启用或禁用按钮,这是我现在尝试的内容:

    public virtual void ARRegister_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
    {
        ARRegister row = e.Row as ARRegister;
        if (row == null) return;
        UnProcessLettering.SetEnabled(row.GetExtension<ARRegisterLeExt>().LettrageCD != null);
    }

我已在网格中将同步设置为true。但是当我选择LettrageCD不为null或为null的行时,没有任何变化。

编辑:似乎我的问题是重复的:Is there any event triggered when highlighting a row?(在我第一次搜索时找不到它:()

1 个答案:

答案 0 :(得分:1)

不要在PXAction上调用SetEnabled,而是在按钮aspx声明中使用StateColumn属性。

当您声明按钮时,您指定一个布尔DAC字段,该字段将根据其值启用/禁用该按钮。请注意,该按钮需要将DependOnGrid属性设置为网格的ID才能获取所选行:

<px:PXToolBarButton Text="Button A" DependOnGrid="grid" StateColumn="IsButtonVisible">

IsButtonVisible是一个自定义的未绑定布尔DAC字段:

#region IsButtonVisible
public abstract class isButtonVisible : IBqlField
{
}

protected bool? _IsButtonVisible;
[PXBool]
[PXUIField(DisplayName = "Is Button Visible", Enabled = false, Visible = false)] 
public virtual bool? IsButtonVisible
{
    get
    {
        return _IsButtonVisible;
    }
    set
    {
        _IsButtonVisible = value;
    }
}
#endregion

您可以根据业务逻辑在RowSelected事件中设置IsButtonVisible的值:

protected virtual void DAC_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
    DAC row = e.Row as DAC;

    if (row != null)
    {
        bool yourCondition = ???;
        row.IsButtonVisible = yourCondition;
    }
}

来源: Enable disable button of grid or PXToolBarButton, which depends from value of column in Acumatica