C# PXGrid只能插入一行

C# PXGrid只能插入一行,c#,erp,acumatica,C#,Erp,Acumatica,我有一个PXGrid和一个复选框控件,头部容器中有一个复选框,网格在细节容器中。我希望这样,当复选框的值为true时,网格可以填充多行,如果复选框的值为false或null时,网格只能填充单行 我已经尝试了以下代码,但它对我不起作用 protected virtual void BSMTNotification_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { if (e.Row == null)

我有一个PXGrid和一个复选框控件,头部容器中有一个复选框,网格在细节容器中。我希望这样,当复选框的值为true时,网格可以填充多行,如果复选框的值为false或null时,网格只能填充单行

我已经尝试了以下代码,但它对我不起作用

    protected virtual void BSMTNotification_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
    {
        if (e.Row == null) return;

        BSMTNotification head = (BSMTNotification)e.Row;

        if(head.Breakdown == false || head.Breakdown == null)
        {
            if(NotificationActivities.Select().Count != 0)
            {
                NotificationActivities.AllowInsert = false;
                NotificationActivities.Cache.AllowInsert = false;
            } 
        }
        else
        {
            NotificationActivities.AllowInsert = true;
            NotificationActivities.Cache.AllowInsert = true;
        }
    }

对不起,我的英语不好,谢谢。

您的代码是正确的,但您应该从NotificationActivity\u row Inserted和NotificationActivity\u row Deleted调用它。就像这样:

protected virtual void NotificationActivity_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
{
    if (e.Row == null) return;

    BSMTNotification head =  BSMTNotifications.Current;

    if(head.Breakdown == false || head.Breakdown == null)
    {
        if(NotificationActivities.Select().Count != 0)
        {
            NotificationActivities.AllowInsert = false;
        } 
    }
    else
    {
        NotificationActivities.AllowInsert = true;
    }
}
仅设置NotificationActivities.AllowInsert就足够了。也不需要设置NotificationActivities.Cache.AllowInsert


此外,您还应确保分解复选框在.aspx中具有“CommitChanges=true”属性。谢谢您的建议,我已尝试从您那里获取建议,但如果数据未保存,网格仍可以填充多行。还有什么其他方法可以解决此类案件?