首页 > 解决方案 > 如何保存 acumatica 创建的自定义表单

问题描述

大家好,在 acumatica 开发中,

我只是想问一下如何在自定义表单上保存和制作操作按钮功能,所以我在我创建的 acumatica 中有一个自定义表单制作计划。

在此处输入图像描述

然后我从 mssql 创建了一个自定义表然后在我的自定义表单上提供所有类这是我来自 acumatica 的表

[Serializable]
  public class prodsched : IBqlTable
  {
    #region Prodid
    [PXDBInt(IsKey = true)]
    [PXUIField(DisplayName = "Prodid")]
    public virtual int? Prodid { get; set; }
    public abstract class prodid : PX.Data.BQL.BqlInt.Field<prodid> { }
    #endregion

    #region Prodnumber
    [PXDBInt(IsKey = true)]
    [PXUIField(DisplayName = "Prodnumber")]
    public virtual int? Prodnumber { get; set; }
    public abstract class prodnumber : PX.Data.BQL.BqlInt.Field<prodnumber> { }
    #endregion

    #region Statusx
    [PXDBInt()]
    [PXUIField(DisplayName = "Statusx")]
    public virtual int? Statusx { get; set; }
    public abstract class statusx : PX.Data.BQL.BqlInt.Field<statusx> { }
    #endregion

    #region Approved
    [PXDBInt()]
    [PXUIField(DisplayName = "Approved")]
    public virtual int? Approved { get; set; }
    public abstract class approved : PX.Data.BQL.BqlInt.Field<approved> { }
    #endregion

    #region Datewan
    [PXDBDate()]
    [PXUIField(DisplayName = "Datewan")]
    public virtual DateTime? Datewan { get; set; }
    public abstract class datewan : PX.Data.BQL.BqlDateTime.Field<datewan> { }
    #endregion

    #region PromiseDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Promise Date")]
    public virtual DateTime? PromiseDate { get; set; }
    public abstract class promiseDate : PX.Data.BQL.BqlDateTime.Field<promiseDate> { }
    #endregion

    #region Descriptionx
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Descriptionx")]
    public virtual string Descriptionx { get; set; }
    public abstract class descriptionx : PX.Data.BQL.BqlString.Field<descriptionx> { }
    #endregion

    #region Shoename
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Shoename")]
    public virtual string Shoename { get; set; }
    public abstract class shoename : PX.Data.BQL.BqlString.Field<shoename> { }
    #endregion

    #region Country
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Country")]
    public virtual string Country { get; set; }
    public abstract class country : PX.Data.BQL.BqlString.Field<country> { }
    #endregion

    #region Article
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Article")]
    public virtual string Article { get; set; }
    public abstract class article : PX.Data.BQL.BqlString.Field<article> { }
    #endregion

    #region Currency
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Currency")]
    public virtual string Currency { get; set; }
    public abstract class currency : PX.Data.BQL.BqlString.Field<currency> { }
    #endregion

    #region Pm
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Pm")]
    public virtual string Pm { get; set; }
    public abstract class pm : PX.Data.BQL.BqlString.Field<pm> { }
    #endregion

    #region Quantity
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "Quantity")]
    public virtual string Quantity { get; set; }
    public abstract class quantity : PX.Data.BQL.BqlString.Field<quantity> { }
    #endregion

    #region Efd
    [PXDBDate()]
    [PXUIField(DisplayName = "Efd")]
    public virtual DateTime? Efd { get; set; }
    public abstract class efd : PX.Data.BQL.BqlDateTime.Field<efd> { }
    #endregion

    #region SeStartDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Se Start Date")]
    public virtual DateTime? SeStartDate { get; set; }
    public abstract class seStartDate : PX.Data.BQL.BqlDateTime.Field<seStartDate> { }
    #endregion

    #region SeEndDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Se End Date")]
    public virtual DateTime? SeEndDate { get; set; }
    public abstract class seEndDate : PX.Data.BQL.BqlDateTime.Field<seEndDate> { }
    #endregion

    #region AssStartDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Ass Start Date")]
    public virtual DateTime? AssStartDate { get; set; }
    public abstract class assStartDate : PX.Data.BQL.BqlDateTime.Field<assStartDate> { }
    #endregion

    #region AssEndDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Ass End Date")]
    public virtual DateTime? AssEndDate { get; set; }
    public abstract class assEndDate : PX.Data.BQL.BqlDateTime.Field<assEndDate> { }
    #endregion

    #region OutStartDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Out Start Date")]
    public virtual DateTime? OutStartDate { get; set; }
    public abstract class outStartDate : PX.Data.BQL.BqlDateTime.Field<outStartDate> { }
    #endregion

    #region OutEndDate
    [PXDBDate()]
    [PXUIField(DisplayName = "Out End Date")]
    public virtual DateTime? OutEndDate { get; set; }
    public abstract class outEndDate : PX.Data.BQL.BqlDateTime.Field<outEndDate> { }
    #endregion

    #region OSmatarrive
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "OSmatarrive")]
    public virtual string OSmatarrive { get; set; }
    public abstract class oSmatarrive : PX.Data.BQL.BqlString.Field<oSmatarrive> { }
    #endregion

    #region OScode
    [PXDBString(250, InputMask = "")]
    [PXUIField(DisplayName = "OScode")]
    public virtual string OScode { get; set; }
    public abstract class oScode : PX.Data.BQL.BqlString.Field<oScode> { }
    #endregion
  }

这就是我创建自定义表单和代码的方式

 public PXSave<prodsched> Save;
    public PXCancel<prodsched> Cancel;
        public PXInsert<prodsched> Insert;
        public PXCopyPasteAction<prodsched> CopyPaste;
        public PXDelete<prodsched> Delete;
        public PXFirst<prodsched> First;
        public PXPrevious<prodsched> Previous;
        public PXNext<prodsched> Next;
        public PXLast<prodsched> Last;

        public PXSelect<prodsched> MasterView;

所以这一切都显示得很完美,但是当我为我的自定义表格输入新数据然后点击 acumatica 上的保存时,它会禁用我的保存按钮,但我输入的数据没有保存,你能教我更多关于在 acumatica 上创建自定义表单以添加保存吗并删除我的按钮点击数据谢谢我在 acumatica 开发中有点新谢谢。

标签: c#asp.netacumatica

解决方案


您应该将 [PXDBInt(IsKey = true)] 更新为 [PXDBIdentity],因为您还将 Prodnumber 作为键并在页面上有选择器控件。我假设这将要求用户输入 Prodnumber 字段并通过它进行搜索,这可能与自动编号键不同。

如果是这种情况,我会将 PXSelector 属性附加到 Prodnumber 字段。您可以添加以下内容来搜索 Prodnumber,但也可以显示其他字段,例如日期和描述:

[PXSelector(typeof(prodsched.prodnumber), typeof(prodsched.prodnumber), typeof(prodsched.datewan), typeof(prodsched.promiseDate), typeof(prodsched.descriptionx))]

如果您希望清理您的操作并使用所有默认值,您可以将它们替换为图表上主 DAC 的声明。例如,SOOrderEntry 具有 SOOrder 的主 DAC。它被声明为

public class SOOrderEntry : PXGraph<SOOrderEntry, SOOrder>

给出所有默认操作。


推荐阅读