【问题标题】:How to Dynamically Set Column Width in Oracle Apex如何在 Oracle Apex 中动态设置列宽
【发布时间】:2012-12-18 08:46:00
【问题描述】:

我有两个从 PL/SQL 返回函数动态创建的经典报表。每个报表的数据一般都包含相同的数据,但它们的列名一般不同。

我希望它们垂直对齐,但列名的不同使列宽不同。我的目标是将每列的每列宽度设置为第一个或第二个报告的列中的较大值。我想我会找到每列长度中较大的一个,并乘以一个设定的像素量。

但是,对于动态生成的报告,我如何首先动态设置列宽?

【问题讨论】:

    标签: dynamic format oracle-apex column-width


    【解决方案1】:

    您可以使用内置于 APEX 中的 jQuery 库使用一些 Javascript 来执行此操作。

    (警告:我的 Javascript 不是世界上最优雅的!)

    这对我有用:

    1) 在页面的“函数和全局变量声明”属性中创建这个函数:

    function setColWidths(colId) {
        var maxWidth = 0;
        $('th#'+colId).each (function (index) {
            w = $(this).width();
            maxWidth = Math.max(maxWidth,w);
            });
        $('th#'+colId).each (function (index) {
            $(this).width(maxWidth);
            });
    }
    

    2)在页面的“页面加载时执行”属性中为每一列调用函数:

    setColWidths('COL01');
    setColWidths('COL02');
    setColWidths('COL03');
    

    您或许可以增强此解决方案,这样您就无需为每一列显式调用该函数。

    【讨论】:

    • 太棒了!谢谢@TonyAndrews。快速提问:我的页面实际上有三份报告,一份主要的 IR 报告,以及我在这个问题中询问的两份经典报告。两个经典报告位于顶部,或先出现,主 IR 报告在后。为什么此代码不考虑 IR 报告?我想知道您的代码是否会因为 IR 报告中的列名更长而搞砸一切,但它不会完美运行。我什至在函数中添加了另一个 $('th#'+colId).each ... ,看看这是否会产生影响,但它没有。 -马修·莫伊森
    • IR 的列别名可能不是 COL01、COL02 等。我刚刚创建了一个列别名为 COL01、COL02 的 IR,它工作正常。
    • 你说得对,我的 IR 是从集合动态创建的并生成 COL01.. 列,但我忘记了我也动态生成了报告属性,因此没有 TH#colId。再次感谢!
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多