[英]jqGrid adjust column size depending on text length
我试图弄清楚如何根据其内容调整网格的列。 这仅适用于特定的列。 到目前为止,我所做的是通过遍历行并比较内容的长度来调整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,但这也不成功。
任何帮助将不胜感激。
因此,我在colModel选项中做了一些进一步的挖掘,发现了以下内容:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options
以下是在构建网格时无法动态更改的选项(如果更改,它们将无效或会导致网格错误)。 对于其中一些选项,有一些方法可以更改值。
name
width
resizable
label (method avail.)
jqGrid Wiki在需要和何时需要时也说明了以下内容。 只需记住,完成此操作后,网格中内置的所有逻辑都将消失。
用当前设置重新加载网格。 这意味着如果数据类型为xml或json,则将新请求发送到服务器。 此方法应应用于已经构造的网格。 请注意,此方法不会更改HEADER信息,这意味着对colModel的任何更改都不会受到影响。 您应该使用gridUnload使用不同的colModel重新加载新配置。 只有在loadonce时才有效:错误!!!
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:方法
希望这也可以帮助其他人:)
这是我根据文本内容实现可变列宽的方法-将其添加到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();
一个工作示例:
我希望有人觉得这有用。
问候,
保罗
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.