在模型驱动应用程序中修改表单中的文本
Modify text in a Form in a model-driven app
我们在模型驱动应用程序的表单中确实有一个选择数组。在选择创建时window我只能输入纯文本
我现在想根据文本修改文本颜色,比如文本是 'Red' 我想将文本颜色更改为红色 and/or 一个红色圆圈图像,使其更显眼.
我创建了一个 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)但我需要它的形式。
我们仅针对网格提供这种方法。为了在表单级别上达到相同的效果,我们将更早地使用 HTML 网络资源。最新推荐的方法是 PCF 控制。
从窗体上下文中获取文本并在 PCF 控件中设置字体颜色。你可以找到类似的控件here.
尽管 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 网络资源中的函数。
以下是选项卡 'source' 的 html 网络资源的内容,它将根据内容创建一个彩色框。
<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;">
我们在模型驱动应用程序的表单中确实有一个选择数组。在选择创建时window我只能输入纯文本
我现在想根据文本修改文本颜色,比如文本是 'Red' 我想将文本颜色更改为红色 and/or 一个红色圆圈图像,使其更显眼.
我创建了一个 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)但我需要它的形式。
我们仅针对网格提供这种方法。为了在表单级别上达到相同的效果,我们将更早地使用 HTML 网络资源。最新推荐的方法是 PCF 控制。
从窗体上下文中获取文本并在 PCF 控件中设置字体颜色。你可以找到类似的控件here.
尽管 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 网络资源中的函数。
以下是选项卡 'source' 的 html 网络资源的内容,它将根据内容创建一个彩色框。
<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;">