jqgrid: как установить параметры панели инструментов на основе значения столбца в выбранной строке - PullRequest
4 голосов
/ 21 марта 2011

У меня есть тип поля столбца со значениями (редактируемые, только для чтения). во всех строках будет заполнено одно из этих значений.

Я хочу включить / отключить редактирование панели инструментов, только если значение столбца можно редактировать для выбранной строки.

как мне добиться этого в jqgrid.

1 Ответ

13 голосов
/ 21 марта 2011

Если я вас правильно понял, вы хотите включить / отключить кнопки «Редактировать» или «Удалить» навигатора на основе выбранной строки. Так что у вас будет enter image description here

если строки не выбраны или выбранная строка не редактируется или стандартная панель инструментов навигатора enter image description here

если строка редактируемая.

Критерий, является ли столбец «редактируемый» или «только для чтения» неправильным, потому что это столбец критериев в столбце, а не в строке, но вы можете легко реализовать свои собственные пользовательские критерии.

Реализация может быть

var myGrid = jQuery("#list");
myGrid.jqGrid({
    /* definition of jqGrid */
    beforeSelectRow: function(rowid) {
        var selRowId = $(this).getGridParam('selrow'),
            tr = $("#"+rowid);
        // you can use getCell or getRowData to examine the contain of
        // the selected row to decide whether the row is editable or not
        if (selRowId !== rowid && !tr.hasClass('not-editable-row')) {
            // eneble the "Edit" button in the navigator
            $("#edit_" + this.id).removeClass('ui-state-disabled');
            $("#del_" + this.id).removeClass('ui-state-disabled');
        } else {
            // unselect previous selected row
            // disable the "Edit" and "Del" button in the navigator
            $("#edit_" + this.id).addClass('ui-state-disabled');
            $("#del_" + this.id).addClass('ui-state-disabled');
        }
        return true; // allow selection or unselection
    },
    loadComplete: function() {
        // just one example how to mark some rows as non-editable is to add
        // some class like 'not-editable-row' which we test in beforeSelectRow
        $("tr.jqgrow:even",this).addClass('not-editable-row');
    }
}).jqGrid('navGrid','#pager');
// disable "Edit" and "Delete" button at the beginning
$("#edit_" + myGrid[0].id).addClass('ui-state-disabled');
$("#del_" + myGrid[0].id).addClass('ui-state-disabled');

Чтобы включить / отключить кнопки «Редактировать» и «Удалить», мы добавляем / удаляем класс «ui-state-disabled» на кнопках панели инструментов навигатора. В приведенном выше коде я отмечаю все строки с четными числами как «не редактируемые». В вашем случае вы можете использовать любые другие критерии, которые имеют больше смысла.

Вы можете посмотреть демоверсию вживую здесь .

...