Question

Actually I have implemented a REST solution to POST, PUT and DELETE data from the NavGrid on jQGrid.

Now in the actions buttons for each row, I try to do the same, but i don't know how generate a dynamic url on default formatter actions.

I try with this:

colModel : [
          {name:'actions', index:'', width:80, fixed:true, sortable:false, resize:false,
              formatter:'actions', 
              formatoptions:{ 
                  url: function(cellValue, rowId, rowData){
                      return restPutURL + '/' + rowId ;
                  },
                  mtype: 'PUT',
                  keys:true,
                  delOptions:{
                      url: restDelURL,
                      recreateForm: true, 
                      beforeShowForm:beforeDeleteCallback,
                      onclickSubmit :function(params, postdata) {
                        params.url += '/' + postdata;
                      }
                  }
              }
          },
          { ...my cols.. }
       ]

Delete action is ok, but edit doesn't work. When a row is saved jQGrid send function as part of the URI:

system/function%20(cellValue,%20rowId,%20rowData)%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(cellValue);%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20/system/function%20(cellValue,%20rowId,%20rowData)%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20

How I can create a dynamic URI? or, how I can add the id of the edited row to the URI?

Était-ce utile?

La solution

If you use current version of jqGrid you can use beforeSaveRow callback to make some actions, like modification of URL, before the row will be saved. Unfortunately formatter: "actions" don't allow you to set beforeSaveRow callback, but you can still use $.jgrid.inlineEdit to do this. The corresponding code could be something like

$.extend(true, $.jgrid.inlineEdit, {
    beforeSaveRow: function (option, rowId) {
        option.url = restPutURL + '/' + rowId;
    }
});

or

$.extend(true, $.jgrid.inlineEdit, {
    beforeSaveRow: function (option, rowId) {
        option.url = this.p.editurl + '/' + rowId;
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top