【发布时间】:2012-02-08 13:16:15
【问题描述】:
我有几个可编辑列的网格
colModel: [
{
name: 'id',
width: 1,
hidden: true,
key: true,
resizable: false
},
{
name: 'name',
editable: true,
sortable: false,
resizable: false
},
{
name: 'name2',
editable: true,
sortable: false,
resizable: false
},
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'name',
出于某种原因,我需要在这些列中有一些不可编辑的单元格
loadComplete: function() {
var ids = grid.jqGrid('getDataIDs');
for (var i=0;i<ids.length;i++) {
var id=ids[i];
var row_data = $(this).jqGrid('getRowData', id);
if (row_data.zzz > 0) {
if (row_data.zzz > 1)
grid.jqGrid('setCell',id,'name2','','not-editable-cell');
else
...
}
else {
grid.jqGrid('setCell',id,'name','','not-editable-cell');
...
}
}
}
所以有些行的两个单元格都可编辑(名称,名称 2),有些只有一个(名称或名称 2)
如果我使用editCell,我没有任何问题 但是editRow不关注不可编辑单元类
我已经通过编辑 jquery.jqGrid.src.js 解决了这个问题 我知道这是非常糟糕的方式
$.jgrid.extend({
//Editing
editRow : function(rowid,keys,oneditfunc,successfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc) {
.......
return this.each(function(){
var $t = this, nm, tmp, editable, cnt=0, focus=null, svr={}, ind,cm;
if (!$t.grid ) { return; }
ind = $($t).jqGrid("getInd",rowid,true);
if( ind === false ) {return;}
editable = $(ind).attr("editable") || "0";
if (editable == "0" && !$(ind).hasClass("not-editable-row")) {
cm = $t.p.colModel;
$('td[role="gridcell"]',ind).each( function(i) {
///
if (!$(this).hasClass("not-editable-cell")) {
///
nm = cm[i].name;
var treeg = ($t.p.treeGrid===true && nm == $t.p.ExpandColumn) ? true : false;
是否可以通过格式化程序解决这个问题?
【问题讨论】: