1

我需要根据返回的数量用颜色填充基于特定计数 sql 的整个单元格。

我试过的解决方案:

pl/sql 根据计数给出一个 background_color 替换字符串。此字符串在列格式属性中传递,如下面的代码

<table>
  <td WIDTH=30 HEIGHT=30 onclick="window.open('http://page.com" bgcolor=#BG_COLOR# >#COUNT(*)#</td>
</table>

page.com 是在同一窗口中显示 sql 的所有结果(不计数)的页面

问题:

整个单元格没有被颜色填满。可能是单元格可以调整大小或可以做一些事情

4

1 回答 1

0

您可以通过使用报告来解决这个问题,但它需要一些 javascript/动态操作才能真正使单元格的背景发生变化。即使您生成一些 html 代码,您的单元格也不会被填充 100%,因为它也会被包装在报告的 html 结构中(即 TD 元素)。
您可以创建一个新的报告模板(共享组件 > 模板),但即便如此,您仍然必须在 sql.xml 中生成一些 html 代码。

如果您只有 1 条记录和 1 个单元格并且最终需要在其中生成一些 html,那么我实际上不会使用报告区域。使用 PLSQL 区域并在其中生成一些 HTML。例如:

DECLARE
   lCount NUMBER;
   lColour VARCHAR2(50);
BEGIN
   SELECT count(*)
     INTO lCount
     FROM emp;

   IF lCount < 10 THEN
      lColour := 'blue';
   ELSIF lCount > 10 THEN
      lColour := 'red';
   END IF;

   htp.p('div style="background-color: '||lColour||'; width: 30px; height: 30px;">'||lCount||'</div>');
END;

您可能必须更改区域模板才能完全满足您的需求。您可以随时复制并更改它,以便它对您生成的 html 的影响最小。

于 2012-11-15T08:29:20.180 回答