【问题标题】:Modify text in a Form in a model-driven app在模型驱动应用程序中修改表单中的文本
【发布时间】:2021-08-27 09:06:09
【问题描述】:

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

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

我创建了一个 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),但我需要它的形式。

【问题讨论】:

    标签: dynamics-crm powerapps powerapps-modeldriven


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      虽然 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”需要是您的网络资源的名称,“showAmpelfarbe”是您要调用的 html 网络资源中的函数。

      以下是标签“源”的 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;">
      

      【讨论】:

        猜你喜欢
        • 2020-06-10
        • 2022-08-17
        • 2022-01-06
        • 2017-07-01
        • 2021-06-14
        • 2017-01-30
        • 1970-01-01
        • 2021-05-12
        • 2017-10-16
        相关资源
        最近更新 更多