【问题标题】:Modify text in a Form in a model-driven app在模型驱动应用程序中修改表单中的文本
【发布时间】:2021-08-27 09:06:09
【问题描述】:
【问题讨论】:
标签:
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;">