2010-08-08 22 views
1

J'ai créé un dojox.Grid avec succès, mais dans un cas, j'ai besoin de passer deux champs à une fonction de formatage au lieu d'un seul. Par exemple:Dojox Grid passer deux champs à formater

 { 
     field: 'id', 
     name: 'Id', 
     formatter: formatterFunction, 
    },

J'ai besoin de passer à formatterFunction() à la fois 'id' et 'nom', par exemple. Comment puis-je faire ceci? Merci.

Répondre

0

Etes-vous sûr de vouloir formater et peut-être ne pas utiliser get à la place? Lorsque vous utilisez un formateur, la valeur uniquement transmise à la fonction correspond à la valeur représentée par ce champ. Toutefois, si vous deviez utiliser get à la place, vous pourriez utiliser l'élément pour accéder aux autres valeurs. (Cependant, vous perdrez le tri).

Donc, pour votre colonne ont

{ 
     field: 'id', 
     name: 'Id', 
     get: getFunction 
    }, 

Puis ont

getFunction: function(index,row) { 
    return row.id + row.name; 
} 
+0

édité ci-dessous voir – Claudio

4

Je sais que cela a déjà été mentionné dans le canal IRC, mais je réponds ici pour que les autres soient au courant, et aussi répondre à votre autre question que je ne suis pas sûr que quelqu'un a répondu.

Nouveau dans 1.4 Si vous définissez la valeur du champ « _item », votre formatter sera appelé avec l'élément entier de la boutique - au lieu d'une valeur de champ

Cela fait il est possible de faire ce que vous voulez en utilisant un formateur.

http://www.dojotoolkit.org/reference-guide/dojox/grid/DataGrid.html#usage

Dans le cas le plus simple, sans réglage formatterScope de la grille, le magasin de la grille est accessible à partir de formatteurs via this.grid.store, par exemple:

function fmtItem(value) { 
    var store = this.grid.store; 
    return store.getValue(value, 'id') + ': ' + store.getValue(value, 'name'); 
} 

Voici un exemple très simple de la formatter ci-dessus en action:

http://jsbin.com/upico4/edit

Il y a également un exemple dans l'une des pages de test, ce qui crée un objet pour maintenir et portée formatteurs:

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_grid_formatters.html

3

A partir de 1.4 dojo vous pouvez également obtenir plusieurs champs d'un magasin. Devrait ressembler à quelque chose comme:

var layout = [{ 
     rows: [ 
      {name: 'Title', fields:['Title', 'url'], formatter:formatLink} 
     ]}] 

    function formatLink(value){ 
     return '<a href="'+value[1]+'">'+value[0]+'</a>'; 
    } 

qui utilise la valeur du champ « URL » pour pointer votre lien à et le titre affiché est rempli avec les données du champ « Titre » dans votre magasin.

-1
function formatterFunction(val, rowIdx, cell){ 

    var name=this.name, 
    field=this.field; 

}