2017-04-13 57 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,但不幸的是它没有帮助 –

相关问题