gpt4 book ai didi

jquery - jqGrid 根据文本长度调整列大小

转载 作者:行者123 更新时间:2023-12-01 05:57:28 25 4
gpt4 key购买 nike

我试图弄清楚如何根据网格的内容调整网格的列。这仅适用于特定列。到目前为止,我所做的是通过循环行并比较内容的长度来调整 colModel。

如果内容超过之前已知的长度,它会再次调整 colModel。它看起来像这样。

        // Get rowId's and get find the longest content
$.each(grid.jqGrid('getDataIDs'), function(row, rowid) {
// Loop through the specified columns
$.each(abo_fields, function(colid, column) {
var abo = grid.jqGrid('getCell', rowid, column);
var new_width = abo.length * 8;
var current = grid.jqGrid('getColProp', column);
if(current['width'] < new_width) {
grid.jqGrid('setColProp', column, {width:new_width});
}
});
});

当我请求 getColProp 时,colModel 会被调整。当我使用 grid.trigger('reloadGrid'); 时该列似乎与原始 colModel 中指定的相同。我也尝试过通过jquery调整CSS,但也没有成功。

任何帮助将不胜感激。

最佳答案

以下是我如何根据文本内容实现可变列宽 - 将其添加到 gridComplete 事件:

$('#parent').append('<span id="widthTest" />');

gridName = this.id;

$('#gbox_' + gridName + ' .ui-jqgrid-htable,#' + gridName).css('width', 'inherit');
$('#' + gridName).parent().css('width', 'inherit');

var columnNames = $("#" + gridName).jqGrid('getGridParam', 'colModel');
var thisWidth;

// Loop through Cols
for (var itm = 0, itmCount = columnNames.length; itm < itmCount; itm++) {

var curObj = $('[aria-describedby=' + gridName + '_' + columnNames[itm].name + ']');

var thisCell = $('#' + gridName + '_' + columnNames[itm].name + ' div');
$('#widthTest').html(thisCell.text()).css({
'font-family': thisCell.css('font-family'),
'font-size': thisCell.css('font-size'),
'font-weight': thisCell.css('font-weight')
});
var maxWidth = Width = $('#widthTest').width() + 24;
//var maxWidth = 0;

// Loop through Rows
for (var itm2 = 0, itm2Count = curObj.length; itm2 < itm2Count; itm2++) {
var thisCell = $(curObj[itm2]);

$('#widthTest').html(thisCell.html()).css({
'font-family': thisCell.css('font-family'),
'font-size': thisCell.css('font-size'),
'font-weight': thisCell.css('font-weight')
});

thisWidth = $('#widthTest').width();
if (thisWidth > maxWidth) maxWidth = thisWidth;
}

$('#' + gridName + ' .jqgfirstrow td:eq(' + itm + '), #' + gridName + '_' + columnNames[itm].name).width(maxWidth).css('min-width', maxWidth);

}

$('#widthTest').remove();

一个工作示例:

http://jsfiddle.net/Ba5yK/17/

我希望有人觉得这很有用。

问候,

保罗

关于jquery - jqGrid 根据文本长度调整列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14022676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com