У меня есть поле jqGrid, которое я установил следующим образом:

colModel: [
    ....,
    {name:'Enabled',index:'Enabled',width:45,editable:true,edittype:'checkbox',
        editoptions:{value:"1:0"},
        formatter: function (cellvalue, options, rowdata) {
            if (cellvalue == 0) return "<span class='ui-icon ui-icon-close hidden-align' style='text-align: center'></span>"; 
            else return "<span class='ui-icon ui-icon-check hidden-align' style='text-align: center'></span>";
        },align:'center',formatoptions:{disabled:false}},
],

Дело в том, что, поскольку я помещаю изображения в значение ячейки, как я могу перейти к форме редактирования значения, чтобы флажок мог быть в отмеченном состоянии, когда значение ячейки истинно?

Заранее всем спасибо! Привет, Луиджи

2
Luigino 14 Сен 2012 в 17:43

1 ответ

Лучший ответ

Ты можешь использовать

formatter: function (cellvalue, options, rowdata) {
    if (cellvalue == 0) {
        return "<span class=\"ui-icon ui-icon-close\"></span>";
    } else {
        return "<span class=\"ui-icon ui-icon-check\"></span>";
    }
},
edittype: 'checkbox', editoptions: {value:
    "<span class=\"ui-icon ui-icon-check\"></span>:<span class=\"ui-icon ui-icon-close\"></span>"}

Или лучше использовать нет editoptions: { value: ... , но использовать formatter с одним из следующих значений внутри: false, 0, no , off, undefined. См. строки кода jqGrid.

if(tmp.search(/(false|0|no|off|undefined)/i)<0 && tmp!=="") {
    $("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked",true);
    $("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked",true); //ie
} else {
    $("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("checked", false);
    $("#"+nm,"#"+fmid)[$t.p.useProp ? 'prop': 'attr']("defaultChecked", false); //ie
}

Для объяснения. Например форматтер

formatter: function (cellvalue, options, rowdata) {
    if (cellvalue == 0) {
        return "<span class=\"ui-icon ui-icon-close\">0</span>";
    } else {
        return "<span class=\"ui-icon ui-icon-check\">1</span>";
    }
}

(без editoptions: { value: ...) должно решить вашу проблему.

1
Oleg 14 Сен 2012 в 19:18