我在Acumatica处理页面实现中错过了什么

时间:2017-04-13 16:32:06

标签: acumatica

我尝试创建Acumatica处理页面。 我有以下aspx代码:

<%@ 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 All和Cancel,这是预期的行为。当我检查&#34;处理全部&#34;然后方法进程接收所有项目。但是如果我选择了几个项目,并按下Process,方法Process就不会收到任何项目(我已经检查过调试器)。我还应该在代码中添加/删除什么才能使按钮Process正常工作?

3 个答案:

答案 0 :(得分:2)

报告的问题是由不可为空的 SettingID 字段引起的。所有DAC字段必须是可空类型。将 SettingID 属性的类型和 _SettingID 字段更改为Nullable<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
    ...
}

答案 1 :(得分:1)

问题是在aspx中你将第一列定义为:

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

虽然您想要的列名是Sele c 。看起来就像那样容易。

答案 2 :(得分:0)

我一直在你身边,我想解决它我必须建立清单。尝试以下内容。

counter++