tree - APEX 树区域转义特殊字符
问题描述
我试图使我的树中的结果文本加粗,但前提是它们匹配特定的条件,所以在 sql 查询中,我在 select 语句中尝试了这两个选项:
'<div class="TFLBOLD">'||A.NAME||' - Nivel - '||level||'</div>'
'<b>'||A.NAME||' - Nivel - '||level||'</b>''
在第一个上,我试图创建一个类来在 css 页面中分配粗体样式。
我已经将选项“转义特殊字符”标记为“否”,但它仍然没有将文本加粗,它看起来像这样:
树区域类型上的此选项有任何问题或错误吗?当条件匹配时,还有另一种方法可以在我的 Tree 区域中使文本变为粗体?
注意:在报告区域中,该选项可以正常工作!
这是我的树代码 tree_code的打印
解决方案
我遇到了类似的问题,这是 John Snyders 的回答:
节点可以有图标,图标可以表示不同种类的节点。这是图标的主要目的,也是区分树中不同类型分支的最简单方法。没有将类添加到节点的声明方式,但可以使用自定义 javascript 来完成。
以下是如何将特定类添加到节点内容(使用 EMP 表上的典型树)。这是我用来在节点中获取比 Tree 区域支持的更多信息的通用技术。我将额外的数据放入工具提示中,然后在树初始化时提取它。
在树区域 sql 中添加一列来保存所需的类。例子:
case when job = 'SALESMAN' then 'sales' else '' end as node_class,
对于工具提示,选择 HTML 表达式并输入:
&NODE_CLASS.|Job: &JOB.<br> Salary: &SAL.
请注意,工具提示包含由 | 分隔的类和工具提示。特点。
在高级 JavaScript 初始化代码中输入:
function(options) { function traverse( n ) { var i, tta = n.tooltip ? n.tooltip.split("|") : [];
if (tta.length === 3) {
n.classes = tta[0];
n.job = tta[1];
n.tooltip = tta[2];
}
if ( n.children ) {
for ( i = 0; i < n.children.length; i++ ) {
traverse( n.children[i] );
}
}
}
options.makeNodeAdapter = function(data, types, hasIdentity) {
var nodeAdapter;
// split the classes out of the tooltip property
traverse(data);
nodeAdapter = $.apex.treeView.makeDefaultNodeAdapter( data, types, hasIdentity );
nodeAdapter.renderNodeContent = function(node, out, options, state) {
if ( options.nodeSelector > 0 ) {
// simulate a checkbox or radio button depending on single/multiple selection
cls = "u-selector"; // ++ replace constant
if ( options.nodeSelector === 1 ) {
cls += " u-selector--single";
}
out.markup('<span class="' + cls + '"></span>');
}
if ( nodeAdapter.getIcon ) {
icon = nodeAdapter.getIcon( node );
if ( icon !== null ) {
out.markup( "<span" ).attr( "class", options.iconType + " " + icon ).markup( "></span>" );
}
}
link = options.useLinks && nodeAdapter.getLink && nodeAdapter.getLink( node );
if ( link ) {
elementName = "a";
} else {
elementName = "span";
}
out.markup( "<" + elementName + " tabIndex='-1' role='treeitem'" ).attr( "class", options.labelClass )
.optionalAttr( "href", link )
.attr( "aria-level", state.level ) // ++ replace constant
.attr( "aria-selected", state.selected ? "true" : "false" ) // ++ replace constant
.optionalAttr( "aria-disabled", state.disabled ? "true" : null ) // ++ replace constant
.optionalAttr( "aria-expanded", state.hasChildren === false ? null : state.expanded ? "true" : "false" ) // ++ replace constant
.markup( ">" )
.content( nodeAdapter.getLabel( node ) )
.markup( " <span class='job'>") // ++ add span for job
.content( node.job ) // ++
.markup( "</span></" + elementName + ">" ); // ++ close the span
};
return nodeAdapter;
};
return options;
}
上面的大部分代码都与之前的类似或从 treeView 小部件中复制而来。traverse 函数将工具提示分成 3 个部分。已修改的 nodeAdapter 行用 // ++ 标记。最有趣的变化是添加跨度和作业。
添加另一个 CSS 规则,例如:
.a-TreeView-label .job { text-transform: lowercase; font-style: italic; }
这应该做。将最后一行的 css 规则更改为您控制行为的需要。
推荐阅读
- python - 如何使用 Jenkins 在 aws cdk 中安装 s3?
- opencv - OpenCV 等效于 np.where()
- c++ - 用于加密/解密的 Firebird 数据库 UDF 不释放内存
- c# - 如何确定哪个属性是数据绑定的默认属性?
- python - 提取python字典中计数为0的元素
- iis-7.5 - IIS 上已停止网站的自定义 404 错误页面
- angular - 单击时如何防止垫子扩展面板打开?
- javascript - 如何在 react native 中将值从 promise 传递给组件 prop?
- c# - 从 .net core 2.2 迁移到 .net core 3.0 后打破视图
- java - Hibernate 注释:具有共享复合键属性的多对多