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:
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.