D365 新按钮创建空行价格线

D365 New Button creates price line with empty line

在添加有关为网格中的对象创建价格的逻辑后,它总是创建 "one line more",它是空的。 因此,如果需要创建两行,则会创建 3 行,并且添加的那一行将为空。

我在代码中遗漏了什么吗?

   [Control("CommandButton")]
    class AreaActionPaneNew
    {
        void clicked()
        {
            PMCParameters   contractParameters = PMCParameters::find();
            PMETmpRentalObjectArea  groupedAreaList; // Group by area_type and cost_type
            PMERentalObjectPrice    priceList;
            date workingDate = currWorkingDate.dateValue();
            ;
            super();

            // Get grouped area values. Values are summed up by area_type and ancost_type
            groupedAreaList = PMERentalObjectAreaCl::getRentalAreaPrCostType(pmeRentalobject.RentalObjectId, userSetting.validFrom(), userSetting.validTo() , workingDate);

            ttsbegin;
            while select groupedAreaList
            {
                select forupdate firstonly priceList
                    where priceList.RentalObjectId == pmeRentalObject.RentalObjectId &&
                          priceList.RentalCostType == groupedAreaList.RentalCostTypeId &&
                          priceList.AreaType == groupedAreaList.Areatype && priceList.ValidFrom == pmeRentalObject.ValidFrom;

                if (!priceList)
                    priceList.initValue();

                priceList.RentalObjectId = pmeRentalObject.RentalObjectId;
                priceList.RentalCostType = groupedAreaList.RentalCostTypeId;
                priceList.ValidFrom      = pmeRentalobject.ValidFrom;

                priceList.AreaType       = groupedAreaList.Areatype;


   priceList.Amount         = groupedAreaList.Price;
            priceList.Area           = groupedAreaList.AreaValue;
            priceList.Quantity       = groupedAreaList.RentalQty;

            if (!priceList)
                priceList.Period  = contractParameters.ReportPeriod;

            if (priceList)
                priceList.update();
            else
                priceList.insert();
        }
        ttscommit;

        pmeRentalObjectPrice_ds.research();
    }

}

代码看起来只是 updates/inserts 而没有创建空行。

根据您的属性,您正在使用 Command Button (see here),它可能有一个关联的命令,例如 New,它有效地推动 Ctrl+N,并会解释为什么你有一个空行。

最简单的检查方法就是创建一个常规 Button 并覆盖点击的方法,然后 copy/paste 您的代码并按下两个按钮,看看它们是否有不同的行为。

检查按钮上的 Command 属性,看看那里是否有东西。尝试注释掉 super(); 调用。

您或许应该只考虑 ButtonMenu Item Button 与关联对象。