我们在模型驱动的应用程序的表单中有一个选择数组。在选择创建窗口中,我只能输入纯文本。
我现在想根据文本修改文本颜色,比如如果文本是"红色",我想将文本颜色更改为红色和/或红色圆圈图像,使其更明显。
我已经创建了一个webresource jscript,我可以在onload事件中读取文本的形式
var formContext = test.getFormContext();
var text= formContext.getAttribute("il_statuscolor").getText();
console.log(text);
这个可以正常工作,但是我找不到任何函数来设置文本。
任何想法?
编辑:只是为了澄清,它在视图中工作得很好(基于本教程:https://learn.microsoft.com/en-us/powerapps/maker/data-platform/display-custom-icons-instead),但我需要它在一个形式。
我们只对网格使用这种方法。为了在表单级别上达到相同的效果,我们将在前面使用HTML web资源。最新推荐的方法是PCF控制。
从表单上下文中获取文本并在PCF控件中设置字体颜色。你可以在这里找到类似的控件。
尽管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资源中的函数。
下面是标签'source'的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;">