Comment obtenir la troisième valeur de ligne dans jqgrid calculée en fonction de la valeur des deux autres colonnes

J’ai là la colonne dans mon jqgrid deux vales je reçois de json de la troisième colonne je dois calculer la valeur des deux autres et montrer comment puis-je faire cela

jQuery("#vehicleResultGrid").jqGrid({ data : jsonText, datatype : 'local', rowNum : 20000, width : '100%', height : 'auto', colNames : [ 'FIN', 'VIN','balnce' ], colModel : [{ name : 'value1', sortable:false, width : 190, classes: "col1" },{ name : 'value2', sortable:false, width : 190 },{ name : 'blance', formatter: CalculatedFormatFunction }] }); function CalculatedFormatFunction(cellval, opts, rowObject, action) { return rowObject[0]*rowObject[1]; } 

J’ai essayé avec ce code.

Si vous avez besoin d’implémenter le remplissage de la troisième colonne blance côté client, vous avez deux méthodes d’implémentation principales:

  1. utilisation d’un formateur personnalisé
  2. utilisation du rappel beforeProcessing .

La deuxième méthode est préférable car vous pouvez utiliser un formateur prédéfini pour la colonne calculée. Par exemple, vous pouvez toujours utiliser le formatter: "interger" pour le formatter: "interger" de colonne

En cas d’utilisation du datatype: 'local' le problème du remplissage de la troisième colonne est vraiment sortingvial. Vous avez déjà saisi des données (variable jsonText dans votre code d’origine) sous forme de tableau d’éléments. Par exemple, vous avez des données d’entrée comme

 var myOrgData = [ {value1: 2, value2: 3}, {value1: 5, value2: 7} ]; 

Vous pouvez donc simplement append la propriété blance à tous les éléments du tableau en entrée:

 var l = myOrgData.length, i, item; for (i = 0; i < l; i++) { item = myOrgData[i]; item.blance = item.value1 * item.value2; // or if the values could be strings then // item.blance = parseInt(item.value1, 10) * parseInt(item.value2, 10); } 

De la manière dont vous résolvez le problème très facilement et pouvez utiliser n’importe quel formateur pour la colonne blance . Par exemple, vous pouvez définir une colonne de blance comme

 {name: "blance", formatter: "integer", sorttype: "integer"} 

Si vous préférez utiliser le formateur personnalisé

 {name: "blance", sorttype: "integer", formatter: function (cellValue, option, rowObject) { return parseInt(rowObject.value1, 10) * parseInt(rowObject.value2, 10); }} 

Vous pouvez utiliser des données d'entrée inchangées, mais vous ne pouvez pas utiliser les avantages d'un formateur prédéfini ou vous devez appeler les formateurs d'origine manuellement, ce qui rend le code plus complexe et moins lisible.

Si vous avez le datatype: "json" ou le datatype: "xml" l'utilisation de callback beforeProcessing est très proche de la simple modification des données d'entrée décrite ci-dessus. Le rappel beforeProcessing reçoit les données renvoyées par le serveur en tant qu'object et le rappel peut les modifier. On peut append des propriétés supplémentaires de la même manière.