交互式网格中列标题中的文本长度
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;
定义列宽的方法有两种:
- 自动。根据您的 IG 中的列数,它将定义宽度列。
- 通过设置。您可以转到 Actions -> Columns 并为每列定义 Minimum Column Width (Pixel)。
能否请您设置列的宽度,让我知道这是否适合您?
我要求列标题与交互式网格中的文本长度一样宽。在我的报告中,将显示哪些列取决于用户将使用 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;
定义列宽的方法有两种:
- 自动。根据您的 IG 中的列数,它将定义宽度列。
- 通过设置。您可以转到 Actions -> Columns 并为每列定义 Minimum Column Width (Pixel)。
能否请您设置列的宽度,让我知道这是否适合您?