为什么我的网格不能保存多行?

时间:2018-06-13 21:31:38

标签: acumatica

我在弹出窗口中嵌入了一个网格,用于存储来自另一个网格的用户所选项目。用户突出显示所需的行,单击按钮,并根据突出显示的行的信息将其添加为网格中的新行。出于某种原因,它不会添加新行,而是覆盖当前的行:

首次添加新行: enter image description here

尝试添加第二行: enter image description here

我选择第一次添加新行的第一张图片。第二个图像显示当我添加第二行时,它会覆盖当前行而不是插入新行。我首先尝试使用PXFilter完成整个过程,发现PXFilters只允许存储一行。然后我创建了一个与所有字段的过滤器同名的空白表,将视图更改为PXSelect,并认为可能是这样,但它没有修复它。

添加到MTO按钮的代码是:

    public PXAction<PMProject> addToMTO;
    [PXUIField(DisplayName = "Add to MTO")]
    [PXButton]
    protected virtual void AddToMTO()
    {
        SOSiteStatusSelected row = sitestatus.Current;
        if (row == null)
            return;

        bool isMade = false;

        //NOTE: If you have a more efficient method to check if a view contains a row, please include that in the answer.
        foreach (MTOLSelected testLine in SelectedItems.Select())
        {
            if (testLine.ItemID == row.InventoryID)
            {
                isMade = true;
                break;
            }
        }
        if (!isMade)
        {
            MTOLSelected line = new MTOLSelected();
            SelectedItems.Insert(line);

            line.ItemID = row.InventoryID;
            line.ItemCD = row.InventoryCD;
            line.Price = row.CuryUnitPrice;
            line.Descr = row.Descr;

            SelectedItems.Update(line);
        }
        else
        {
            SelectedItems.Ask("This item is already moved into the MTO List", MessageButtons.OK);
        }
    }

DAC是:

[Serializable]
public class MTOLSelected : IBqlTable
{
    [PXDBIdentity]
    [PXUIField(DisplayName = "MTOLID")]
    public int? Id { get; set; }
    public abstract class id : IBqlField { }

    //Might more Drawing Number and Qty Required to this new table
    #region ItemID
    [PXDBInt()]
    [PXUIField(DisplayName = "ID")]
    public virtual int? ItemID { get; set; }
    public abstract class itemID : IBqlField { }
    #endregion  

    #region ItemCD
    [PXDBString(15)]
    [PXUIField(DisplayName = "Item CD")]
    public virtual string ItemCD { get; set; }
    public abstract class itemCD : IBqlField { }
    #endregion

    #region Descr
    [PXDBString(255)]
    [PXUIField(DisplayName = "Desc")]
    public virtual string Descr { get; set; }
    public abstract class descr : IBqlField { }
    #endregion

    #region Qty
    [PXDBInt()]
    [PXUIField(DisplayName = "Qty")]
    public virtual int? Qty { get; set; }
    public abstract class qty : IBqlField { }
    #endregion  

    #region Price
    [PXDBDecimal()]
    [PXUIField(DisplayName = "Price")]
    public virtual decimal? Price { get; set; }
    public abstract class price : IBqlField { }
    #endregion

    #region Length
    [PXDBDecimal()]
    [PXUIField(DisplayName = "Length")]
    public virtual decimal? Length { get; set; }
    public abstract class length : IBqlField { }
    #endregion

    #region Feet
    [PXDBInt()]
    [PXUIField(DisplayName = "Feet")]
    public virtual int? Feet { get; set; }
    public abstract class feet : IBqlField { }
    #endregion

    #region Inches
    [PXDBDecimal()]
    [PXUIField(DisplayName = "Inches")]
    public virtual decimal? Inches { get; set; }
    public abstract class inches : IBqlField { }
    #endregion
}

1 个答案:

答案 0 :(得分:2)

你的DAC似乎在Identity字段上需要IsKey:[PXDBIdentity(IsKey = true)]