2017-04-13 54 views
0

我嘗試創建Acumatica處理頁面。 我有以下的aspx代碼:我在Acumatica處理頁面執行中錯過了什麼

<%@ Page Language="C#" MasterPageFile="~/MasterPages/TabView.master" AutoEventWireup="true" 
    ValidateRequest="false" CodeFile="SM102000.aspx.cs" 
    Inherits="Page_SM102000" Title="Untitled Page" %> 

<%@ MasterType VirtualPath="~/MasterPages/TabView.master" %> 
<asp:Content ID="cont1" ContentPlaceHolderID="phDS" runat="Server"> 
    <px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%" 
     PrimaryView="StackOverflowProcess" TypeName="StackOverflowSync.UsrStackOverflowProcess"> 
    </px:PXDataSource> 
    </asp:Content> 
<asp:Content ID="cont2" ContentPlaceHolderID="phF" runat="server"> 
    <px:PXGrid ID="grid" runat="server" 
     Height="400px" 
     Width="100%" 
     AllowPaging="True" 
     AdjustPageSize="Auto" 
     AutoAdjustColumns="True" 
     AllowSearch="True" 
     SkinID="Inquire" 
     DataSourceID="ds" 
     NoteIndicator="true" 
     TabIndex="3300" 
     TemporaryFilterCaption="Filter Applied"> 
     <Levels> 
      <px:PXGridLevel DataMember="StackOverflowProcess"> 
       <Columns> 
        <px:PXGridColumn DataField="Selected" TextAlign="Center" Width="20px" Type="CheckBox" AllowCheckAll="True"> 
        </px:PXGridColumn> 
        <px:PXGridColumn DataField="FailInfo" Width="20px"> 
        </px:PXGridColumn> 
        <px:PXGridColumn DataField="SynchronizationType" Width="80px"> 
        </px:PXGridColumn> 
        <px:PXGridColumn DataField="LastFullSync" TextAlign="Right" Width="100px"> 
        </px:PXGridColumn> 
        <px:PXGridColumn DataField="LastRunCmt" Width="80px"> 
        </px:PXGridColumn> 
        <px:PXGridColumn DataField="LastRunFld" TextAlign="Right" Width="100px"> 
        </px:PXGridColumn> 
       </Columns> 
      </px:PXGridLevel> 
     </Levels> 
     <AutoSize Container="Window" Enabled="True" MinHeight="400" /> 
    </px:PXGrid> 
</asp:Content> 

繼DAC類:

using PX.Data; 
using System; 

namespace StackOverflowSync.DAC 
{ 
    [Serializable()] 
    public class UsrStackOverflowSettingItem: IBqlTable 
    { 
     #region SettingID 
     public abstract class settingID : PX.Data.IBqlField 
     { 
     } 

     protected int _SettingID; 
     [PXDBIdentity(IsKey = true)] 
     public virtual int SettingID 
     { 
      get 
      { 
       return this._SettingID; 
      } 
      set 
      { 
       this._SettingID = value; 
      } 
     } 
     #endregion 

     #region FailInfo 
     public abstract class failInfo : PX.Data.IBqlField 
     { 
     } 
     protected string _FailInfo; 

     [PXDBString(255, IsUnicode = true)] 
     [PXDefault()] 
     [PXUIField(DisplayName = "")] 

     public virtual string FailInfo 
     { 
      get 
      { 
       return this._FailInfo; 
      } 
      set 
      { 
       this._FailInfo = value; 
      } 
     } 
     #endregion 
     #region Selected 
     public abstract class selected : IBqlField 
     { 
     } 
     protected bool? _Selected = false; 

     /// <summary> 
     /// Indicates whether the record is selected for mass processing. 
     /// </summary> 
     [PXBool] 
     [PXDefault(false)] 
     [PXUIField(DisplayName = "Selected")] 
     public bool? Selected 
     { 
      get 
      { 
       return _Selected; 
      } 
      set 
      { 
       _Selected = value; 
      } 
     } 
     #endregion 
     #region SynchronizationType 
     public abstract class synchronizationType : PX.Data.IBqlField 
     { 
     } 
     protected string _SynchronizationType; 

     [PXDBString(255, IsUnicode = true)] 
     [PXDefault()] 
     [PXUIField(DisplayName = "Synchronization Type")] 

     public virtual string SynchronizationType 
     { 
      get 
      { 
       return this._SynchronizationType; 
      } 
      set 
      { 
       this._SynchronizationType = value; 
      } 
     } 
     #endregion 
     #region LastFullSync 
     public abstract class lastFullSync : PX.Data.IBqlField 
     { 
     } 
     protected DateTime? _LastFullSync; 

     [PXDBDate()] 
     [PXDefault()] 
     [PXUIField(DisplayName = "Last Full Sync")] 

     public virtual DateTime? LastFullSync 
     { 
      get 
      { 
       return this._LastFullSync; 
      } 
      set 
      { 
       this._LastFullSync = value; 
      } 
     } 
     #endregion 
     #region LastRunCmt 
     public abstract class lastRunCmt : PX.Data.IBqlField 
     { 
     } 
     protected decimal? _LastRunCmt; 
     [PXDBDecimal(2)] 
     [PXDefault(TypeCode.Decimal, "0.0")] 
     [PXUIField(DisplayName = "Last Run: Records Commited")] 
     public virtual decimal? LastRunCmt 
     { 
      get 
      { 
       return this._LastRunCmt; 
      } 
      set 
      { 
       this._LastRunCmt = value; 
      } 
     } 
     #endregion 
     #region LastRunFld 
     public abstract class lastRunFld : PX.Data.IBqlField 
     { 
     } 
     protected decimal? _LastRunFld; 
     [PXDBDecimal(2)] 
     [PXDefault(TypeCode.Decimal, "0.0")] 
     [PXUIField(DisplayName = "Last Run: Records Failed")] 
     public virtual decimal? LastRunFld 
     { 
      get 
      { 
       return this._LastRunFld; 
      } 
      set 
      { 
       this._LastRunFld = value; 
      } 
     } 
     #endregion 

     #region CreatedByID 
     public abstract class createdByID : PX.Data.IBqlField 
     { 
     } 
     protected Guid? _CreatedByID; 
     [PXDBCreatedByID()] 
     public virtual Guid? CreatedByID 
     { 
      get 
      { 
       return this._CreatedByID; 
      } 
      set 
      { 
       this._CreatedByID = value; 
      } 
     } 
     #endregion 
     #region Tstamp 
     public abstract class tstamp : PX.Data.IBqlField 
     { 
     } 
     protected byte[] _Tstamp; 
     [PXDBTimestamp()] 
     public virtual byte[] Tstamp 
     { 
      get 
      { 
       return this._Tstamp; 
      } 
      set 
      { 
       this._Tstamp = value; 
      } 
     } 
     #endregion 
     #region CreatedByScreenID 
     public abstract class createdByScreenID : PX.Data.IBqlField 
     { 
     } 
     protected string _CreatedByScreenID; 
     [PXDBCreatedByScreenID()] 
     public virtual string CreatedByScreenID 
     { 
      get 
      { 
       return this._CreatedByScreenID; 
      } 
      set 
      { 
       this._CreatedByScreenID = value; 
      } 
     } 
     #endregion 
     #region CreatedDateTime 
     public abstract class createdDateTime : PX.Data.IBqlField 
     { 
     } 
     protected DateTime? _CreatedDateTime; 
     [PXDBCreatedDateTime()] 
     public virtual DateTime? CreatedDateTime 
     { 
      get 
      { 
       return this._CreatedDateTime; 
      } 
      set 
      { 
       this._CreatedDateTime = value; 
      } 
     } 
     #endregion 
     #region LastModifiedByID 
     public abstract class lastModifiedByID : PX.Data.IBqlField 
     { 
     } 
     protected Guid? _LastModifiedByID; 
     [PXDBLastModifiedByID()] 
     [PXUIField(DisplayName = "Last Modified By")] 
     public virtual Guid? LastModifiedByID 
     { 
      get 
      { 
       return this._LastModifiedByID; 
      } 
      set 
      { 
       this._LastModifiedByID = value; 
      } 
     } 
     #endregion 
     #region LastModifiedDateTime 
     public abstract class lastModifiedDateTime : PX.Data.IBqlField 
     { 
     } 
     protected DateTime? _LastModifiedDateTime; 
     [PXDBLastModifiedDateTime()] 
     [PXUIField(DisplayName = "Modified At")] 
     public virtual DateTime? LastModifiedDateTime 
     { 
      get 
      { 
       return this._LastModifiedDateTime; 
      } 
      set 
      { 
       this._LastModifiedDateTime = value; 
      } 
     } 
     #endregion 
     #region LastModifiedByScreenID 
     public abstract class lastModifiedByScreenID : PX.Data.IBqlField 
     { 
     } 
     protected string _LastModifiedByScreenID; 

     [PXDBLastModifiedByScreenID()] 
     public virtual string LastModifiedByScreenID 
     { 
      get 
      { 
       return this._LastModifiedByScreenID; 
      } 
      set 
      { 
       this._LastModifiedByScreenID = value; 
      } 
     } 
     #endregion 
    } 
} 

而下圖:

using System.Collections; 
    using System.Collections.Generic; 
    using System.Linq; 
    using PX.Data; 
    using PX.SM; 
    using StackOverflowSync.DAC; 

    namespace StackOverflowSync 
    { 
     public class UsrStackOverflowProcess:PXGraph<UsrStackOverflowProcess> 
     { 
      [PXFilterable] 
      public PXProcessing<UsrStackOverflowSettingItem> StackOverflowProcess; 
      public PXCancel<UsrStackOverflowSettingItem> Cancel; 


      public UsrStackOverflowProcess() 
      { 
       StackOverflowProcess.SetProcessDelegate(Process); 
      } 

      public static void Process(List<UsrStackOverflowSettingItem> syncItems) 
      { 
       foreach (UsrStackOverflowSettingItem usrStackOverflowPrcSt in syncItems) 
       { 
        // 
       } 
      } 

      public override bool IsDirty => false; 
     } 
    } 

如果我編譯並在我的Acumatica比如我看開這一切三個按鈕:處理,以及處理所有和取消,這是預期的行爲。當我檢查「全部處理」時,方法進程接收所有項目。但是,如果我選擇了幾個項目,並按Process,方法Process不會收到任何(我在調試器中籤入)。我還需要添加/刪除哪些內容才能使按鈕Process正常工作?

回答

2

報告的問題是由不可空的設置ID字段造成的。所有DAC字段必須是可空類型。您的自定義屏幕應該按預期運行更改的類型之後SettingID屬性和_SettingIDNullable<int>int?):

[Serializable()] 
public class UsrScanCoSettingItem : IBqlTable 
{ 
    #region SettingID 
    public abstract class settingID : PX.Data.IBqlField 
    { 
    } 

    protected int? _SettingID; 
    [PXDBIdentity(IsKey = true)] 
    public virtual int? SettingID 
    { 
     get 
     { 
      return this._SettingID; 
     } 
     set 
     { 
      this._SettingID = value; 
     } 
    } 
    #endregion 
    ... 
} 
0

我一直在你身邊,我想解決它我不得不建立清單。嘗試如下所示。

//Invoices.SetProcessDelegate(SendData); 
     Invoices.SetProcessDelegate(delegate(List<ARInvoice> list) 
     { 
      List<ARInvoice> newlist = new List<ARInvoice>(list.Count); 
      foreach (ARInvoice doc in list) 
      { 
       newlist.Add(doc); 
      } 
      SendData(newlist); 
     }); 
1

的問題是,在ASPX你的第一列定義爲:

<px:PXGridColumn DataField="Seleted" ... 

當你想要的列的名稱是塞萊Ç特德。看起來就像那麼簡單。

+0

嗨亞歷克斯。感謝您指出這一點。我更改了在aspx頁面中選擇的Seleted,但不幸的是它沒有幫助 –

相關問題