views:

119

answers:

2

Hello again,

My problem now is trying to send the ID (editable: false) of a row when editing that row.

For example, i have a grid with columns userid(editable: false), username(editable: true), firstname(editable: true), lastname(editable: true). When editing the row the grid is only sending the parameters username, firstname and lastname. In the server side i need the userid to know to which user i've tu apply those new values.

the editUrl looks like:

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

Thanks

This is the full code:

$.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
    });
})
+1  A: 

You can use

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

in the definition of the piezaId (ID) column. The parameter hidedlg is currently not real needed, but can be useful if you decide the use other jqGrid features.

Oleg
what does hidedlg exactly?
Garis Suero
If `hidedlg` set to true this column will not appear in the modal dialog where users can choose which columns to show or hide (`columnChooser`). See http://www.trirand.com/jqgridwiki/doku.php?id=wiki:show_hide_columns for more details.
Oleg
A: 

in your onSelectRow callback, you can modify the editUrl to be whatever you want, including passing in the ID you need.

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

jqGrid will add all the other nececessary params to that editurl for you.

Gregg
Oleg's answer helped me exactly how i wanted, but anyhow thanks...
Garis Suero