0

在模型驱动的应用程序中,我们确实有一个表单中的选择数组。在选择创建窗口中,我只能输入纯文本。

我现在想根据文本修改文本颜色,比如如果文本是“红色”,我想将文本颜色更改为红色和/或红色圆圈图像以使其更明显。

我创建了一个 webresource jscript,我可以使用它在表单的 onload 事件中读取文本

var formContext = test.getFormContext();
var text= formContext.getAttribute("il_statuscolor").getText();
console.log(text);

这工作正常,但我找不到任何功能来设置文本。

有任何想法吗?

编辑:澄清一下,它在视图中工作得非常好(基于本教程:https ://docs.microsoft.com/en-us/powerapps/maker/data-platform/display-custom-icons-instead )但是我需要它的形式。

4

2 回答 2

1

我们只对网格有这种方法。为了在表单级别上达到相同的效果,我们将在前面使用 HTML Web 资源。最新推荐的方法是 PCF 控制。

从表单上下文中获取文本并在 PCF 控件中设置字体颜色。您可以在此处找到类似的控件。

于 2021-08-27T20:00:18.410 回答
0

尽管 Arun Vinoth 的回答为我指明了正确的方向,但我很庆幸,这是一个完整的答案,对于以执行上下文作为第一个参数的表单,您需要将“form_onload”称为“onload”。

function form_onload(executionContext) {
    var formContext = executionContext.getFormContext();
    var wrControl = formContext.getControl("WebResource_Ampelfarbe");
    if (wrControl) {
        wrControl.getContentWindow().then(
            function (contentWindow) {
                contentWindow.showAmpelfarbe(Xrm, formContext);
            }
        )
    }
}

其中“WebResource_Ampelfarbe”需要是您的 Web 资源的名称,“showAmpelfarbe”是您要调用的 html Web 资源中的函数。

以下是选项卡“源”的 html Web 资源的内容,它将根据内容创建一个彩色框。

<html><head>
<script>
function showAmpelfarbe(xrm, formContext) {
    // Optionally set Xrm and formContext as global variables on the page.
    window.Xrm = xrm;
    window._formContext = formContext;
      
    // Add script logic here that uses xrm or the formContext.
    var ampel_value = formContext.getAttribute("il_statuscolor").getValue();
    ampel_color = '';
    if (ampel_value == 100000000) {
        ampel_color = "red";
    }else if (ampel_value == 100000001) {
        ampel_color = "yellow";
    }else if (ampel_value == 100000002) {
        ampel_color = "green";
    }
    document.body.style.backgroundColor = ampel_color;
}

</script>

<meta></head><body onfocusout="parent.setEmailRange();" style="overflow-wrap: break-word;">

于 2021-08-31T08:56:54.193 回答