javascript Dataverse XRM:如果选择字段设置为0(否),是否有方法隐藏表单中的字段?

bejyjqdl  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(81)

我正在Power Platform中构建一个模型驱动的应用。我的表格都准备好了。默认情况下,因此,在窗体加载时,列lm_drafttoggle设置为“Yes”,其在Dataverse中的基础值为“1”。
因此,我需要的是默认隐藏这三个字段(lm_drafttoggle、lm_technicaltoggle和lm_cabetball)。如果用户将lm_drafttoggle更改为“No”,则这三个字段应可见。
我已经尝试了以下方法,但它对表单加载没有任何作用。

function onFormLoad(executionContext) {
    var formContext = executionContext.getFormContext();

    // Get value of the 'lm_drafttoggle' field
    var toggleValue = formContext.getAttribute("lm_drafttoggle").getValue();

    if (toggleValue === "No") {
        // Hide the three fields
        formContext.getControl("lm_peerreviewer").setVisible(false);
        formContext.getControl("lm_technicalapprover").setVisible(false);
        formContext.getControl("lm_cabapprover").setVisible(false);
    } else if (toggleValue === "Yes") {
        // Show the three fields
        formContext.getControl("lm_peerreviewer").setVisible(true);
        formContext.getControl("lm_technicalapprover").setVisible(true);
        formContext.getControl("lm_cabapprover").setVisible(true);
    }
}

function onSave(executionContext) {
    onFormLoad(executionContext);
}

非常感谢。LM

function onFormLoad(executionContext) {
    var formContext = executionContext.getFormContext();

    // Get value of the 'lm_drafttoggle' field
    var toggleValue = formContext.getAttribute("lm_drafttoggle").getValue();

    if (toggleValue === "No") {
        // Hide the three fields
        formContext.getControl("lm_peerreviewer").setVisible(false);
        formContext.getControl("lm_technicalapprover").setVisible(false);
        formContext.getControl("lm_cabapprover").setVisible(false);
    } else if (toggleValue === "Yes") {
        // Show the three fields
        formContext.getControl("lm_peerreviewer").setVisible(true);
        formContext.getControl("lm_technicalapprover").setVisible(true);
        formContext.getControl("lm_cabapprover").setVisible(true);
    }
}

function onSave(executionContext) {
    onFormLoad(executionContext);
}
tp5buhyn

tp5buhyn1#

如果您想在更改“lm_draftoggle”字段时格式化表单,则必须使用类似于以下内容的代码:

function formatForm(executionContext) {
    var formContext = executionContext.getFormContext();

    // Get value of the 'lm_drafttoggle' field
    var toggleValue = formContext.getAttribute("lm_drafttoggle").getValue();

    if (!toggleValue) {
        // Hide the three fields
        formContext.getControl("lm_peerreviewer").setVisible(false);
        formContext.getControl("lm_technicalapprover").setVisible(false);
        formContext.getControl("lm_cabapprover").setVisible(false);
    } else {
        // Show the three fields
        formContext.getControl("lm_peerreviewer").setVisible(true);
        formContext.getControl("lm_technicalapprover").setVisible(true);
        formContext.getControl("lm_cabapprover").setVisible(true);
    }
}

function onFormLoad(executionContext) {
    formatForm(executionContext);

    var formContext = executionContext.getFormContext();
    formContext.getAttribute("lm_drafttoggle").addOnChange(formatForm);
}

我假设该字段是一个复选框(2个值),getValue方法将返回一个布尔值而不是字符串值,因此我将该更改合并到代码中。

相关问题