2016-12-14 31 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