如何将换行符\n转换为换行符< br>Oracle APEX报告

h9a6wy2h  于 2023-10-16  发布在  Oracle
关注(0)|答案(2)|浏览(152)

通常,开发人员在向顶点报告添加换行符时会遇到问题。特别是在处理内容行时。
example of the issue
这里有一个快速解决方案。
1.查找报表区域的内容行选择器。在我的例子中,class=“t-ContentRow-description”
1.添加JavaScript以替换\n到
在页面加载Adding Javascript to Page Load
let elements = document.querySelectorAll('.t-ContentRow-description'); elements.forEach(function(element) { // Replace newline characters with <br> let updatedContent = element.textContent.replace(/\n/g, '<br><br>'); element.innerHTML = updatedContent; });
after the fix
谢谢你以后:-)
默认情况下,apex不允许在报表区域上呈现html标记,因此像REPLACE(REPLACE(OUTCOMES, CHR(13)||CHR(10), '<br/>'), CHR(10), '<br/>')这样的pl/sql代码将无法工作,并将导致显示
添加一个换行符

9nvpjoqh

9nvpjoqh1#

作为概述,这里有几个选项可以在报表中呈现换行符(请随意添加):
来源查询:

select NOTE_ID,
       NOTE_TEXT
  from IG_NOTES

经典报表

*列的HTML表达式属性

<span style="white-space:pre-wrap; width:100%; word-wrap:break-word;">#NOTE_TEXT#</span>

*css class

在页面或文件中定义css类内联

.wrapped-text {
  white-space:pre-wrap; 
  width:100%; 
  word-wrap:break-word;
}

更多关于css here中的换行符
然后在列属性中添加CSS类

*替换SQL和转义特殊字符

见@Littlefoot回答

交互报表

*列的HTML表达式属性(同经典)

<span style="white-space:pre-wrap; width:100%; word-wrap:break-word;">#NOTE_TEXT#</span>

*css class

css类不能分配给列,但可以在html表达式中引用。

<span class="wrapped-text">#NOTE_TEXT#</span>

*替换SQL和转义特殊字符

见@Littlefoot回答

交互网格

*css class

对列使用列名JavaScript函数

function(config) {     
    config.defaultGridColumnOptions = {         
        cellTemplate: '<span style="white-space:pre-wrap; width:100%; word-wrap:break-word;">&NOTE_TEXT.</span>'     
    };     
    return config; 
}

*替换SQL和转义特殊字符

由于IG中没有“转义特殊字符”,因此需要使用列转义JavaScript函数

function(config) {     
    config.defaultGridColumnOptions = {         
        cellTemplate: '<pre>&NOTE_TEXT.</pre>'     
    };     
    return config; 
}
ac1kyiln

ac1kyiln2#

谢谢你以后:-)
以后就是现在,所以-谢谢。
我创建了一个包含两列IDTEXT的测试表,其中存储在该列中的文本如下所示:

* Architect prod & non-prod environment app & db deployment architecture
* Architect & design
* Review source and target

默认情况下,如果您不做任何事情,输出(在一个经典报告中;你没有指定你的开发人员使用的 * 哪个 * 报告)看起来像你的截图显示的那样-所有内容都进入同一行:

* Architect prod & non-prod environment app & db deployment architecture * Architect & design * Review source and target

将CRLF替换为<br>标签的查询:

select ID,
   replace(replace(TEXT, chr(10), '<br>'), chr(13), '<br>') text
from TEST

输出不会更改,除非您导航到TEXT列的属性并切换Escape special characters属性OFF。再次运行报告,输出正常:

切换到互动报表;在相同属性关闭的情况下:

因此,是的-谢谢你的分享,但有一个更简单的方法来做到这一点。把这个问题的链接(实际上是答案)发给你的开发人员,也许他们会觉得有用。

相关问题