столбец jqGrid с флажками - PullRequest
       17

столбец jqGrid с флажками

0 голосов
/ 20 февраля 2012

У меня проблема с jqGrid. У меня есть список документов в jqGrid. Первый столбец DocID, второй - DocName, теперь я хочу еще два столбца с флажками, чтобы пользователь мог подписаться на эти документы. Поэтому мне нужен столбец 3 и столбец 4 с флажками, чтобы пользователь мог установить любое количество флажков, а затем при каждом нажатии флажков мне нужно сделать AJAX-вызов с идентификатором документа, чтобы я мог сохранить опцию для того пользователя, на которого подписан пользователь этот конкретный документ.

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

ЗДЕСЬ МОЙ Grid Code.

jQuery("#doc").jqGrid({
    url: urlDoc + docID,
    datatype: 'json',
    mtype: 'GET',
    colNames:[<?php echo (buildCSV(array(_(''), _('Document ID'), _('Document Name'), _('Subscribe'), _('Copy Locally')))); ?>],
    colModel:[
            {name:'fld_doc2comp_status',index:'fld_doc2comp_status', width:1, editable: false, align:"left", hidden:true},
            {name:'fld_comp_documentid',index:'fld_comp_documentid', width:70, editable: true, align:"left", sortable:false,
                 editrules:{required:true}, formoptions:{label:'<?php echo (_('Document ID') . ' *');?>'} },
            {name:'fld_documentname',index:'fld_documentname', editable: true, align:"left", sortable:false,
            editrules:{required:true}, formoptions:{label:'<?php echo (_('Document Name') . ' *');?>'} },
            {name:'fld_subscribe',index:'fld_subscribe', editable: true, formatter:'checkbox', edittype:"checkbox", formatoptions:{disabled:false}, sortable:false, width:60, align:"center"},
            {name:'fld_local',index:'fld_local', editable: true, formatter:'checkbox', edittype:"checkbox", formatoptions:{disabled:false}, sortable:false, width:60, align:"center"}
    ],
    loadComplete: function() {
        jQuery('#doc').setSelection(jQuery('#doc').getDataIDs()[0],true);
        $('.ui-jqgrid-titlebar-close').remove();
    },
    onSelectRow: function(id){
        docID=id;
    },
    width:650,
    height:430,
    rowNum:100,
    viewrecords: true,
    sortable: true,
    sortname: 'fld_comp_documentid',
    sortorder: 'asc',
    pager:"#docpgr",
    pgbuttons:true,
    pginput:true,
    editurl: urlDoc + docID,
    caption: '<?php echo _('Document');?>'
});

Я хочу сохранить поля fld_subscribe и fld_local в базе данных на главном экране, а не через экран редактирования записи. Мне нужно, чтобы пользователь мог изменять fld_local и fld_subscribe для любого документа, просто установив флажок.

Ждем ваших быстрых ответов, ребята.

1 Ответ

1 голос
/ 20 февраля 2012

Я рекомендую вам взглянуть на ответ , который показывает, как привязать щелчок на флажке к вашему обработчику событий. Демонстрация использует Tree Grid, но код работает точно так же, как и любой jqGrid.

Кстати, this внутри loadComplete - это DOM <table>. Он имеет свойство строки . Первая строка jqGrid - это скрытая пустая строка. Таким образом, id первой видимой строки будет this.rows[1].id. Вы можете проверить это this.rows.length > 1 и затем использовать this.rows[1].id вместо jQuery('#doc').getDataIDs()[0].

...