阻止 FormRun 任务以 DetailsTransaction 模式执行

Block FormRun task from executing in DetailsTransaction pattern

我正在构建一个基于表单模式 DetailsTransaction 的简单日记账表单。在此模式中,它具有标准的两个视图布局,header/*journalTable 网格和 lines/*journalTrans 网格。

但是,当我单击“新建”按钮两次创建新的 header/journal 时,它会自动调用 taskSwitchToDetailsView 任务并切换到行。我希望阻止这种情况发生,但我不确定该怎么做。有没有办法阻止此任务被调用?

您是否尝试过 viewEditModeHelper() 和其他表单事件处理程序?

我现在面前没有环境,但这里有一个小片段可能会让你知道在哪里看。我知道这不是你要找的,但我想的是同样的风格。

[FormEventHandler(formStr(LogisticsPostalAddress), FormEventType::Initialized)]
public static void MyForm_OnInitialized(xFormRun sender, FormEventArgs e)
{
    // Subscribe event handlers
    FormRun formRun = sender as FormRun;

    formRun.viewEditModeHelper().EditModeSwitched += eventhandler(MyEventHandler.ViewEditModeSwitched);

}

OOTB 期刊有很多复杂性,如果我需要一个强大的期刊实现,我会创建派生自 JournalFormController 的 类 和提供编号序列生成的 JournalFormTable/JournalFormTrans,blocking/locking、验证,以及更多非常有用和强大的功能,用于日记帐形式 + table 结构。

但是,我不需要这些。因此,为了解决我的具体问题,我将此添加到 *journalTable 数据源的创建方法的创建方法中(超级调用通过调用任务(#taskSwitchToDetailsView)将表单的上下文更改为行)。为了解决这个问题,我只需调用任务(#taskSwitchToGridView)紧接在super.

之后
[DataSource]
class CustomJournalTable
{
    public void create(boolean _append = false)
    {
        #Task

        super(_append);

        element.task(#taskSwitchToGridView); 
    }
}