tags:

views:

147

answers:

1

I'm trying to use form editing on jqgrid. When the data is sent to the webserver, I want an extra field sent in the get/post data.

It sounds like editData is what I want to use. How do I hook this into the navbar?

<script type="text/javascript">
    $(document).ready(function(){ 
        if (jQuery('#ReferenceGrid').attr('role') == 'undefined' || jQuery('#ReferenceGrid').attr('role') == null) {
            var lastSel;
            jQuery('#ReferenceGrid').jqGrid({
                url: '/PlannedWorkOrder/Items/',
                datatype: 'json',
                postData: { referenceNumber: $('#reference').text() },
                colNames: ['Platinum Part Number', 'Quantity'],
                colModel: [
                    { name: 'PlatinumPartNumber', index: 'PlatinumPartNumber', width: 300, sortable: false, editable: true },
                    { name: 'Quantity', index: 'Quantity', width: 300, sortable: false, editable: true, editrules:{integer: true}  },
                ],
                jsonReader: {
                    cell: "",
                    id: "PlatinumPartNumber",
                    repeatitems: false
                },
                search:false,
                viewrecords: true,
                height: '100%',
                sortorder: 'desc',
                caption: 'Details',
                altRows: true,
                pager : '#gridpager',
                pgbuttons: false,
                pginput: false,
                pgtext: false,
                viewrecords: false,
                editurl: '/PlannedWorkOrder/Item/'
            })
            jQuery("#ReferenceGrid").navGrid('#gridpager', { add: true, edit: true, search: false });
        }
        else {
            $("#ReferenceGrid").setGridParam({ postData: { firstName: $('#Reference').val(), lastName: $('#Reference').val() } });
            $("#ReferenceGrid").trigger("reloadGrid")
        }
    });

</script>
+1  A: 

To add additional parameters which will be sent during adding/editing of data in form editing you can use editData:

jQuery('#ReferenceGrid').jqGrid('navGrid',"#gridpager",
    {},
    {editData: {firstName: $('#Reference').val(),
                lastName: $('#Reference').text()}}, // edit options
    {editData: {firstName: $('#Reference').val(),
                lastName: $('#Reference').text()}); // add options

Moreover your construction with jQuery('#ReferenceGrid').attr('role') looks a little strange. Probably you find the solution of the same problem in my old suggestion http://stackoverflow.com/questions/2928371/how-to-filter-the-jqgrid-data-not-using-the-built-in-search-filter-box/2928819#2928819. I recommend you to use postData as a function: use

postData: { referenceNumber: function() { return $('#reference').text(); } },

instead of

postData: { referenceNumber: $('#reference').text() },
Oleg