如何通过取消选中复选框来禁用字段?

时间:2012-10-26 12:41:32

标签: axapta dynamics-ax-2012

我对如何实现此代码有疑问

public void setFieldAccess()
{

if(HcmWorkerBankAccount.FullAmount == NoYes::Yes)
{

    hcmworkerbankaccount_ds.allowedit(false);
}
else
{
    hcmworkerbankaccount_ds.allowedit(true);
}
}

信用:http://axhelper.blogspot.com/2011/02/to-disable-record-in-form-by-unchecking.html

它表示要在表单的方法上创建它,并在数据源的活动方法和字段的修改方法中调用它。我假设这是数据源中的字段,而不是表单设计。

我的问题是,如果我称之为方法:

public int active()
{
int ret;
element.setFieldAccess();
ret = super();

return ret;
}


public void modified()
{

element.setFieldAccess();
super();
}

3 个答案:

答案 0 :(得分:2)

首先,你的方法太冗长了,这就是把它放进去的方法:

public void setFieldAccess()
{
    hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(!HcmWorkerBankAccount.FullAmount);
}

此外,在 super()电话后调用方法

public int active()
{
    int ret = super();
    element.setFieldAccess();    
    return ret;
}

答案 1 :(得分:1)

它没有工作,因为我重写了错误字段的修改方法。我覆盖了受影响的字段上的方法,而不是确定它的allowEdit功能的字段。

另外

public void setFieldAccess()
{

if(HcmWorkerBankAccount.FullAmount == NoYes::Yes)
{

hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(false);
}
else
{
hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(true);
}
}

答案 2 :(得分:1)

恰好是这样,我今天在Global类中发现了一个也可以做到这一点的方法。

public static void enableDSField(FormDataSource _datasource, fieldId _fieldId, boolean _enable)
{
    if (_datasource && _fieldId)
    {
        enableDatasourceFieldObject(_datasource.object(_fieldId), _enable);
    }
}