答案 0 :(得分:5)
如果我们与销售订单进行比较,则销售订单行会在Availabilty_FieldSelecting
期间从LSSOLine获取其值。页面上的电子报告位于选项卡上StatusField="Availability"
。我们可以通过添加未绑定的扩展字段来执行类似的操作,然后在字段中选择填充值。另一种方法是实现LSCROpportunityProducts
类继承LSSelect
类似于LSSoLine
(更好的首选解决方案)。为了保持这个简单并专注于让字段显示文本,我将使用扩展字段和简单字段选择扩展图中的机会。
(1)在dac扩展中,创建一个未绑定的字段(MyAvailability是示例字段):
[PXTable(typeof(CROpportunityProducts.cROpportunityID), typeof(CROpportunityProducts.cROpportunityProductID), IsOptional = true)]
[Serializable]
public class CROpportunityProductsMyExtension : PXCacheExtension<CROpportunityProducts>
{
#region MyAvailability
public abstract class myAvailability : PX.Data.IBqlField
{
}
protected string _MyAvailability;
[PXString(IsUnicode = true)]
[PXUIField(DisplayName = "Product Availability", Enabled = false)]
public virtual string MyAvailability
{
get
{
return this._MyAvailability;
}
set
{
this._MyAvailability = value;
}
}
#endregion
}
(2)在商机产品标签上,通过设置属性StatusField
将新字段连接为网格状态值。页面需要修改以添加此值,并且在添加时应该看起来像这样(需要在项目中进行屏幕自定义 - &gt;操作编辑ASPX并找到ProductsGrid以粘贴到StatusField和值中):
<px:PXGrid ID="ProductsGrid" SkinID="Details" runat="server" Width="100%"
Height="500px" DataSourceID="ds" ActionsPosition="Top" BorderWidth="0px"
SyncPosition="true" StatusField="MyAvailability">
(3)现在,在图表扩展中填充字段:
修改:Current<>
的使用并不总是包含UI中当前突出显示的正确行。根据{{1}}切换到Required<>
,产品标签中的多行结果都是正确的。
PXFieldSelectingEventArgs.Row
结果: