2016-12-14 65 views
0

我正在尝试从SOOOrderEntry-> POLink添加一个从POOrderExt到网格的usrfield。我试图通过定制器添加一个新字段(它试图在数据类中创建字段:SO.POLine3)。将usrfield添加到POLINK网格POLine3 PXProjection

[PXDBDate(BqlField = typeof(POOrderExt.usrFactDate))] 
[PXUIField(DisplayName = "Factory Confirmed", Enabled = false)] 

error message from customizer

失败,我承认这是技术上等同于一个SQL视图由于PXProjection所以不会有专门的DAC。有没有办法可以追加POLIN3实现来包含我的扩展类,还是我必须创建一个全新的可序列化并更改网格Datamember?

编辑:我已经实现DAC的扩展

namespace PX.Objects.SO{ 
public class POLine3Ext: PXCacheExtension<PX.Objects.SO.POLine3>{ 



     #region UsrCustomField 


     [PXString][PXUIField(DisplayName="Custom Field")] 
     public virtual string UsrCustomField{get;set;} 
     public abstract class usrCustomField : IBqlField{} 

    #endregion 

    #region UsrFactoryConfirmedDate 
    [PXDBDate] 
    [PXUIField(DisplayName = "FactoryConfirmedDate")] 

    public virtual DateTime? UsrFactoryConfirmedDate { get; set; } 
    public abstract class usrFactoryConfirmedDate : IBqlField { } 
    #endregion 



}} 

这里是我的领域拖欠事件对我的用户字段

protected virtual void POLine3_UsrFactoryConfirmedDate_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e) 
    { 
     POLine3 row = (POLine3)e.Row; 
     if (row == null) return; 
     POLine3Ext rowE = PXCache<POLine3>.GetExtension<POLine3Ext>(row); 

     POOrder pRow = PXSelect<POOrder, Where<POOrder.orderNbr, Equal<Required<POLine3.orderNbr>>>> 
          .Select(Base, row.OrderNbr); 
     POOrderExt pRowExt = PXCache<POOrder>.GetExtension<POOrderExt>(pRow); 

     if (pRow == null) return; 
     e.NewValue = pRowExt.UsrFactoryConfirmedDate; 
     e.Cancel = true; 
    } 

正如我在下面Hybriddzz后评论都提到,有当我创建PXDBDate字段时,操作数数据类型null对于最大运算符无效。它不会让我打开POLINK行动来查看网格。

+0

另外,您是否可以检查您的项目,是否为表添加了条目?如果那么它可能需要被删除。 打开您的项目>文件>编辑项目项目>检查条目类型'表'和对象名称'POLine3' – Hybridzz

+0

定制程序确实创建了一个条目,我最终删除了它,因为它导致了错误。 – JB90

+0

目前我正在像上面提到的那样手动创建扩展类并现在进行测试。 – JB90

回答

1

您可以自己为DAC POLine3编写扩展名。

参阅帮助>定制> Func键定制的例子>将数据字段添加>添加数据字段从代码

添加数据字段从代码

如果您在自定义代码工作MS Visual Studio,您可以在DAC扩展代码中定义新的数据字段,然后在窗体上创建控件。

+0

这似乎是当我尝试在扩展DAC中创建PXDBDate字段时出现错误“操作数数据类型NULL对于max运算符无效”。如果我将其更改为未绑定的版本PXDate,它将工作,我可以将其添加到网格。不幸的是,我试图从PO上的另一个自定义日期字段中默认该日期,这是我一直无法想象的障碍。 – JB90