2010-01-06 6 views

Répondre

2

7 vues, un nouveau record minimum pour moi quand je trouve la réponse.

Je devais définir ma propre fonction de tri (en utilisant un 3e paramètre indéfini http://yuilibrary.com/projects/yui2/ticket/2528649).

function sortNumbersWithLinks(a, b, desc, field) { 
    a = a.getData(field).replace(/<[^>]+>/, ''); 
    b = b.getData(field).replace(/<[^>]+>/, ''); 

    a = parseFloat(a); 
    b = parseFloat(b); 

    return YAHOO.util.Sort.compare(a, b, desc); 
} 

var myColumnDefs = [ 
      {key:"Name", sortable:true}, 
      {key:"Performance", sortable:true, sortOptions:{sortFunction:sortNumbersWithLinks}}, 
      {key:"Price", sortable:true, sortOptions:{sortFunction:sortNumbersWithLinks}}, 
      {key:"Performance/Price", sortable:true, parser:"number"}, 
]; 
1

Vous devez définir un analyseur personnalisé pour ce champ pour extraire le numéro de la soupe de tags.

Quelque chose comme

{ 
    key: 'num_in_there_somewhere', 
    parser: function (html) { 
     return +html.replace(/<.*?>|\s/g, ''); 
    } 
} 
+1

Mais alors la colonne perd son lien –

+0

True. Le plus simple est de laisser le lien intact et d'écrire un trieur personnalisé. Le plus propre, de manière plus performante est d'inclure deux fois le champ dans le schéma (touches wiff diff), l'un avec un analyseur comme ci-dessus, l'autre sans. Ensuite, dans columnDefs, pointez sur la clé analysée, mais spécifiez un formateur personnalisé qui définit le contenu de la cellule à partir de la clé non analysée. De cette façon, les données sous-jacentes sont pures, le tri est rapide et la dynamique d'affichage est maintenue. – Luke