交互式网格中列标题中的文本长度

Length of text in Column Headings in Interactive Grid

我要求列标题与交互式网格中的文本长度一样宽。在我的报告中,将显示哪些列取决于用户将使用 server-side 条件在 select 列表中选择的内容。

有什么办法可以实现吗?

截图:

需要显示哪些列取决于用户通过 DQ 审计选择的值 Select 列表。

这不是微不足道的,但以下应该对你有用...

首先,在页面的函数和全局变量声明中添加如下函数属性:

function resizeIGColumns(gridView) {
  var addWidth = 20;
  var addWidthSort = 2;

  gridView.view$.grid('getColumns').forEach(function(column) {
    if (column.hidden || column.property === 'APEX$ROW_ACTION') {
      return true;
    }

    var headerSpan$ = $('#' + column.domId);
    var headerSort$ = headerSpan$.next('.a-GV-header-sort');\
    var width = headerSpan$.width() + addWidth;

    if (headerSort$.length) {
      width += headerSort$.width() + addWidthSort;
    }

    gridView.view$.grid('setColumnWidth', column.property, width);
  });
}

接下来,将以下代码添加到页面的 Execute when Page Loads 属性中:

var gridView = apex.region('emp-reg').call('getViews').grid;
var widgetInst = gridView.view$.data('apex-grid');
var orgRefresh = widgetInst.refresh;

widgetInst.refresh = function() {
  orgRefresh.call(widgetInst);
  resizeIGColumns(gridView);
};

widgetInst.refresh();

此代码正在重新定义网格小部件的刷新功能,以便它调用额外的 resizeIGColumns 功能。

旧版本的 APEX

在与 Abhinav 在线会面后,我们发现 APEX 5 中需要更改以下行。

resizeIGColumns中,这一行:

var headerSpan$ = $('#' + column.domId);

应该改成这样:

var headerSpan$ = $('#' + column.elementId + '_HDR');

并且在 Execute When Page Loads 代码中,这一行:

var gridView = apex.region('emp-reg').call('getViews').grid;

应该改成这样:

var gridView = apex.region('emp-reg').widget().interactiveGrid('getViews').grid;

定义列宽的方法有两种:

  1. 自动。根据您的 IG 中的列数,它将定义宽度列。
    1. 通过设置。您可以转到 Actions -> Columns 并为每列定义 Minimum Column Width (Pixel)

能否请您设置列的宽度,让我知道这是否适合您?