我已将我的自定义字段'UsrPrintQty'设置为在POReceiptLine_RowSelected事件上启用,如下所示:
protected void POReceiptLine_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (POReceiptLine)e.Row;
PXUIFieldAttribute.SetEnabled<POReceiptLineExt.usrPrintQty>(cache, row, true);
//PXUIFieldAttribute.SetEnabled(cache, row, "UsrPrintQty", true);
}
在Acumatica版本18.200.0075上,它在我的开发服务器上运行良好。但是,当我将自定义发布到版本为18.112.0019的另一个实例时,它根本无法正常工作。
我调试代码,该行也被击中。 我设置了最高的定制级别,猜测其他代码可能会覆盖此代码。 我通过“应用更新”重新启动应用程序。 我什至将事件从RowSelected更改为RowSelecting。 我尝试了SetEnabled的另一种重载方法(在上面的代码中对此进行了注释)。
但没有任何效果。
如果我输入这两行:
cache.AllowUpdate = true;
Base.transactions.Cache.AllowUpdate = true;
然后它允许我进行更新,但随后我可以更新整个不需要的行。
我还将字段属性AllowUpdate设置为true。
但仍然没有运气。
谢谢。
答案 0 :(得分:1)
高速缓存的AllowUpdate方法优先于SetEnabled方法。 通常在关闭的文档上使用false参数调用缓存AllowUpdate来防止进行任何修改。
如果您要求用户能够修改已关闭文档的一个字段,则必须跳过一些麻烦。在基础图将AllowUpdate设置为false之后,必须将AllowUpdate设置为true。
尝试以下模式:
tableView.contentOffset