3 回答

TA贡献1111条经验 获得超0个赞
更改行的背景颜色的主要想法将在此处和此处找到。我建议您阅读此答案,其中讨论了不同方法的不同优点和缺点。
要从列名获取列索引,可以使用以下简单函数:
var getColumnIndexByName = function(grid, columnName) {
var cm = grid.jqGrid('getGridParam','colModel'),i=0,l=cm.length;
for (; i<l; i++) {
if (cm[i].name===columnName) {
return i; // return the index
}
}
return -1;
};
该函数getColumnIndexByName($("#list"), 'MyColumnName')将为您获取colModel“ MyColumnName”列的索引。
要更改背景色,您可以按照以下示例操作
loadComplete: function() {
$("tr.jqgrow:odd").addClass('myAltRowClass');
}
从答案中,但是':odd'可以使用jQuery.filter自己编写过滤器来代替过滤器。在过滤器内部,您可以使用:nth-child()来访问来自相应<td>元素的数据(请参阅此处)
更新:您可以执行以下操作(非常接近另一个答案中的代码):
loadComplete: function() {
var iCol = getColumnIndexByName($(this),'closed'),
cRows = this.rows.length, iRow, row, className;
for (iRow=0; iRow<cRows; iRow++) {
row = this.rows[iRow];
className = row.className;
if ($.inArray('jqgrow', className.split(' ')) > 0) {
var x = $(row.cells[iCol]).children("input:checked");
if (x.length>0) {
if ($.inArray('myAltRowClass', className.split(' ')) === -1) {
row.className = className + ' myAltRowClass';
}
}
}
}
}
相应的演示在这里。您将看到以下内容:
顺便说一下,如果“关闭”列将被隐藏,则所有内容将继续像以前一样工作。
更新2:答案描述了如何使用rowattr回调简化解决方案并获得最佳性能(如果为gridview: true)。
添加回答
举报