【问题标题】:How to persist checkbox checked state in Acumatica PXGrid?如何在 Acumatica PXGrid 中保持复选框选中状态?
【发布时间】:2020-03-23 09:05:13
【问题描述】:

我在 PXGrid 中有“选中”复选框列,当我选中它时,页面回发并且选中状态不会丢失,但是当我单击自定义操作按钮然后选中复选框时,我应该怎么做才能保持复选框状态?

在操作按钮点击时,我打开了一个对话框,这里所有复选框都未选中,PrimaryView 和对话框数据成员不同。

我应该怎么做才能保持复选框状态?

【问题讨论】:

  • 你是否在字段中设置了“提交更改”?

标签: acumatica acumatica-kb


【解决方案1】:

Selected 标识符在处理屏幕中具有特殊含义。 Acumatica 框架将不同的行为应用于名为Selected 的字段。对于处理屏幕,需要有一个名为Selected 的字段。在这种情况下,您应该避免将字段命名为 Selected

确保字段使用PXDBBool 属性而不是PXBool 属性进行修饰。只有带有PXDB 前缀的字段才会被持久化到数据库中。

将数据库和 DAC 中的字段名称从 Selected 更改为其他名称,例如 IsChecked

public abstract class isChecked : PX.Data.BQL.BqlBool.Field<isChecked> { }

[PXDBBool]
[PXUIField(DisplayName="Selected")]
public virtual Boolean? IsChecked
{
    get;
    set;
}

【讨论】:

  • 感谢您的回复,我得到了答案。我还有另一个问题,在处理屏幕中,在哪种情况下,我可以在单击处理/处理所有按钮单击时获得选定的行?
  • 只能在 Process Delegate 方法中读取 Selected 列的值。如果您在其他地方阅读它,则该值将无效。你也不能设置它的价值。它是仅与 Selected 列相关的特殊情况之一。具体方法是SetProcessDelegate方法中传入的参数。在此文档页面示例中,它是“public static void Process(List products)”方法:help-2020r1.acumatica.com/…
  • 如果找不到 Process Delegate 方法,请将您的图形源代码添加到您的问题中。
  • 感谢您的回复,我的处理程序是非静态的,我想在点击处理程序上显示一个弹出窗口,当我点击处理时会发生什么,然后它会在我选择 2 时自动选中所有复选框,请知道为什么?还有我怎么才能被选中?
  • 您应该将其设为静态,因为您将无法在处理委托的上下文中可靠地引用“this”对象。您也无法通过该方法显示对话框。听起来您没有正确遵循处理屏幕模式,您是否调用了 SetProcessDelegate?
【解决方案2】:

yourviewname.Cache.Persist(PXDBOperation.Update);

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多