目前我在"添加库存商品" acumatica中的销售订单和采购订单,在此定制中,我添加了"标记为"列虽然它已经存在,但它不可编辑,我怎样才能让它为用户编辑?
此处附有自定义"添加库存商品"。
的屏幕截图完成的事情:
答案 0 :(得分:1)
将您的字段添加到SOOrderStatusSelected DAC扩展中。它必须是未绑定的字段,因为DAC未绑定到表。您可以在事件处理程序中添加更多逻辑以保留到数据库。
public class SOSiteStatusSelectedExt : PXCacheExtension<PX.Objects.SO.SOSiteStatusSelected>
{
[PXString]
[PXUIField(DisplayName="Marked For")]
public virtual string UsrMarkedFor { get; set; }
public abstract class usrMarkedFor : IBqlField { }
}
在RowSelected事件中启用SOOrderEntry图扩展中的字段:
public class SOOrderEntryExtension : PXGraphExtension<SOOrderEntry>
{
protected virtual void SOSiteStatusSelected_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
PXUIFieldAttribute.SetEnabled<PX.Objects.SO.SOSiteStatusSelectedExt.usrMarkedFor>(sender, e.Row, true);
}
在SalesOrder屏幕的Acumatica v6.10.0010中测试:
答案 1 :(得分:1)
深入研究继承自INSiteStatusLookup的SOSiteStatusLookup,你会发现&#39; OnRowSelected&#39;它会禁用所有字段,除了&#39;已选择&#39;和&#39; QtySelected&#39;列。要覆盖此内容,请尝试将以下内容添加到SOOrderEntry图表扩展中,以便将要添加到此视图的任何字段添加为可从您的扩展程序中修改...
protected virtual void SOSiteStatusSelected_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected del)
{
del?.Invoke(sender, e);
PXUIFieldAttribute.SetEnabled<MyExtension.MyField>(sender, e.Row, true);
}
替换&#39; MyExtension&#39;使用您的类扩展名和&#39; MyField&#39;带有字段名称标记。