【发布时间】:2015-10-28 01:49:34
【问题描述】:
根据内容动态列宽
我尝试通过这种方式根据内容动态调整列宽,通过查找每行的字符长度,然后最终从中获取最大长度并将其设置为网格列宽。
loadComplete : function () {
$("#grid").on("jqGridAfterLoadComplete jqGridRemapColumns", function () {
var $this = $("#grid"),
colModel = $this.jqGrid("getGridParam", "colModel"),
iCol,
iRow,
rows,
row,
n = $.isArray(colModel) ? colModel.length : 0;
var rowData = "";
var rowDataLen="";
var input = [];
var divs = $( "div" );
var colWidth=125;
for (iCol = 0; iCol < n; iCol++) {
input = [];
for (iRow = 0, rows = this.rows; iRow < rows.length; iRow++) {
row = rows[iRow];
rowData = $(row.cells[iCol]).find(divs).html();
if(rowData != undefined)
rowDataLen = rowData.length;
input.push(rowDataLen);
}
var finalWidth = Math.max.apply(null, input);
if(finalWidth < colWidth)
finalWidth = colWidth;
$("#grid").jqGrid("setColWidth", iCol, finalWidth);
var gw = $("#grid").jqGrid('getGridParam','width');
$("#grid").jqGrid('setGridWidth',gw);
}
});
},
它工作正常。
但是它太慢并且出现Uncaught RangeError: Maximum call stack size exceeded
当我有更多记录时出错,例如 500。
谁能帮助调整上述解决方案,使其更快?
这是我的 HTML 代码:
<td role="gridcell" style="text-align:left;" title="Hot-forged Hot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forged." aria-describedby="grid_test">
<div style="max-height: 120px">Hot-forged Hot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forgedHot-forged.</i><br><br><i>tttttttttttttttttttttttttttttttt</i></div></td>
我实际上是在找到 div 内容的最大字符大小..我也尝试以这种方式直接获取 <td> 的标题属性 - rowData = $(row.cells[iCol]).attr('title'); - 但它也给出了同样的错误
固定行高的列模型格式化程序:
格式化程序:函数(cellvalue){ if(cellvalue == undefined || cellvalue == null){ 单元格值 = ""; } 返回 '' + 单元格值 + ''; },
或者我怎样才能降低这段代码的性能?请帮忙..
【问题讨论】:
标签: jquery html css performance jqgrid