Как сделать ячейку в jqxGrid динамически редактируемой в зависимости от содержимого строки

Я пытаюсь сделать ячейку в jqxGrid редактируемой в зависимости от значения другого столбца в строке (с именем «Редактируемый»).

{ text: "Percentage", datafield: "Percentage", columntype: 'numberinput', width: 100, cellsformat: 'p2',
  editable: function (index, datafield, value, defaultvalue, column, rowdata) {
               return rowdata.Editable;
            }
 },

Это не работает. Ячейка всегда доступна для редактирования независимо от значения rowdata.Editable.

Замена return rowData.Editable; на return false; тоже не работает.

Я использую jqWidgets 3.9.0 в сочетании с JQuery 1.7.1.

Может ли кто-нибудь объяснить, почему это не работает и как заставить его работать?


person phn    schedule 16.11.2015    source источник


Ответы (2)


Я заставил это работать, выполнив следующие действия:

Замена URL-адреса в источнике данных на localdata, который ссылается на локальный массив с именем «данные».

Этот массив заполняется с использованием исходного URL-адреса.

        var data = [{}];
        var source =
        {
            datatype: "json",
            datafields: [
                 { name: 'Id', type: 'number' },
                 { name: 'Name', type: 'string' },
                 { name: 'Percentage', type: 'string' },
                 { name: 'Editable', type: 'bool' }
            ],
            localdata: data
        }

Использование свойства cellbeginedit вместо редактируемого свойства при определении столбцов в jqxGrid:

        var dataAdapter = new $.jqx.dataAdapter(source);
        $("#myGrid").jqxGrid(
        {
            width: 800,
            source: dataAdapter,
            editable: true,
            editmode: 'click',
            selectionmode: 'singlecell',
            columns: [
                { text: "Id", datafield: "Id", columntype: 'textbox', editable: false, hidden: true },
                { text: "Name", datafield: "Name", columntype: 'textbox', width: 400, editable: false },
                { text: "Percentage", datafield: "Percentage", columntype: 'numberinput', width: 100, cellsformat: 'p2',
                    cellbeginedit: function (row) {
                        return data[row].Editable;
                    }
                },
            ]
        });
person phn    schedule 17.11.2015
comment
работал для меня, ссылаясь на $("#myGrid").jqxGrid('getrowdata', row) вместо data[row] - person devio; 12.04.2017

Я использовал cellclick для такого контроля.

$("#jqxGrid").on('cellclick', function (event) {
    var args = event.args;
    var datafield = event.args.datafield;
    var rowIndex = args.rowindex;
    var data = $('#jqxGrid').jqxGrid('getrowdata', rowIndex);
    if(datafield == 'assign'){
        if(data.assign){
            $('#jqxGrid').jqxGrid('setcolumnproperty', 'datafield', 'editable', true);
        }else{
            $('#jqxGrid').jqxGrid('setcolumnproperty', 'datafield', 'editable', false);
        }
    }
});
person Neo Ng    schedule 27.11.2015