2010-03-31 3 views
1

Lorsque vous utilisez l'éditeur de cellules en ligne dans mon datatable je veux valeur ronde à 10 multiplesYui éditeur de cellules en ligne datatable problème

Voici mon code:

mydatatable.subscribe("cellDblclickEvent",datatable_DetailsCommande.onEventShowCellEditor); 

var onCellEdit = function(oArgs) { 

        var oColumn=oArgs.editor.getColumn(); 
        var column=oColumn.getKey(); 
        var oRecord = oArgs.editor.getRecord(); 
        var newValue=oRecord.getData(column); 
        var row = this.getRecord(oArgs.target); 


        // calculate the modulo 
        n = newValue % 10; 


        if(n!=0) 
        { 
         newValue=parseInt(newValue); 
         oRecord.setData(column,eval(newValue+(10-n))); 
        } 


       } 
mydatatable.subscribe("editorSaveEvent", onCellEdit); 

Résultat de la fonction:

Après deux en cliquant dans la cellule je change la valeur à 17 par exemple et je clique sur save, je veux alors avoir 20 dans ma cellule datatable mais j'en ai 17. Après un double clic dans ma cellule datatable j'obtiens 20 dans l'éditeur de cellule inline.

Comment mettre la valeur arrondie dans ma cellule datatable?

salutations,

Répondre

1

Lorsque vous créez votre éditeur en ligne dans la définition de votre colonne, vous pouvez spécifier un validateur qui effectuera votre arrondi:

new YAHOO.widget.TextboxCellEditor({ 
    validator: function(data) { 
     // Convert to a number 
     var number = data * 1; 

     if (!YAHOO.lang.isNumber(number)) { 
      return undefined; 
     } 

     var n = number % 10; 
     return n === 0 ? number : number + 10 - n; 
    } 
}); 
+0

Remerciez est pour réponse. Même en utilisant updateRecordValue j'ai toujours le même problème. J'ai essayé alert (oRecord.getData (colonne)) après les deux méthodes setData et updateRecordValue et j'ai obtenu la bonne valeur mais pas dans ma cellule datatable. –

+0

Désolé, c'est vrai, 'updateRecordValue' ne fonctionnera pas. J'ai jeté un coup d'oeil au code de DataTable et ma réponse mise à jour devrait faire l'affaire. –

+0

Fianlly J'ai utilisé la méthode updateCell http://developer.yahoo.com/yui/docs/YAHOO.widget.DataTable.html#method_updateCell. En tout cas merci pour la réactivité –