2010-07-04 2 views
2

Моя проблема теперь пытается отправить идентификатор (editable: false) строки при редактировании этой строки.Отправка дополнительных параметров в editurl на JQgrid

Например, у меня есть сетка с колоннами идентификатору пользователя (editable: false), имя пользователя (editable: true), FirstName (editable: true), LastName (editable: true). При редактировании строки сетка отправляет только параметры имени пользователя, имени и имени. На стороне сервера мне нужен идентификатор пользователя, чтобы узнать, к какому пользователю я применяю эти новые значения.

editUrl выглядит следующим образом:

editurl : CONTEXT_PATH+'/ajax/admin/savePart.do?category=1', 

Благодарности

Это полный код:

$.jgrid.useJSON = true; 
//http://www.trirand.com/jqgridwiki/doku.php?id=wiki%3Acommon_rules 
$(document).ready(function() { 
    //alert(CONTEXT_PATH); 
    var lastsel; 
    jQuery("#rowed3").jqGrid(
      { 
       url : CONTEXT_PATH+'/ajax/getPartesByCategory.do?catid=<s:property value="categoryId" />', 
       //url : '/autoWEB/text.html', 
       datatype: "json", 
       ajaxGridOptions: { contentType: "application/json" }, 
       jsonReader : { 
        root: "rows", 
        page: "page", 
        total: "total", 
        records: "records", 
        repeatitems: false 
       }, 
       headertitles: true, 
       colNames : [ 'ID', 'Pieza', 'Disponible'], 
       colModel : [ { 
        name : 'piezaId', 
        index : 'piezaId', 
        align : "right", 
        width : 50, 
        editable : false, 
        required : true 
       }, { 
        name : 'descripcion', 
        index : 'descripcion', 
        width : 390, 
        editable : true, 
        required : true 
       }, { 
        name : 'disponible', 
        index : 'disponible', 
        width : 80, 
        editable : true, 
        edittype : 'select', 
        editoptions:{value:"0:No;1:Si"}, 
        required : true 
       } ], 
       rowNum : 20, 
       rowList : [ 20, 40, 60, 80 ], 
       pager : '#prowed3', 
       sortname : 'piezaId', 
       postData: {piezaId : lastsel}, 
       mtype:"POST", 
       viewrecords : true, 
       sortorder : "desc", 
       onSelectRow : function(id) { 
        if (id && id !== lastsel) { 
         jQuery('#rowed3').jqGrid('restoreRow', lastsel); 
         jQuery('#rowed3').jqGrid('editRow', id, true); 
         lastsel = id; 
        } 
       }, 
       editurl : CONTEXT_PATH+'/ajax/admin/savePieza.do?categoria=<s:property value="categoryId" />', 
       caption : "Piezas" 
      }); 
    jQuery("#rowed3").jqGrid('navGrid', "#prowed3", { 
     edit : false, 
     add : false, 
     del : false 
    }); 
}) 

ответ

2

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

hidden: true, editable: true, editrules: { edithidden: false }, hidedlg: true 

в определении piezaId (ID). Параметр hidedlg в настоящее время не нужен, но может быть полезен, если вы решите использовать другие функции jqGrid.

+0

Что же такое hidedlg? –

+2

Если 'hidedlg' установлен в true, этот столбец не появится в модальном диалоговом окне, где пользователи могут выбирать, какие столбцы показывать или скрывать (' columnChooser'). Подробнее см. Http://www.trirand.com/jqgridwiki/doku.php?id=wiki:show_hide_columns. – Oleg

3

в вашем обратном вызове onSelectRow вы можете изменить editUrl как угодно, в том числе прохождение в ID, который вам нужен.

$("#rowed3").jqGrid('setGridParam', {editurl:'whatever/url/you/need/with/the/id'}); 

jqGrid добавит вам все другие дополнительные параметры в этот editurl.

+0

Ответ Олега помог мне точно, как я хотел, но так или иначе спасибо ... –

0

Передача значений в строке GET работала для меня.

editurl: '/ajax/update?line=1', 
Смежные вопросы