2010-04-19 9 views
0

J'ai produit un tableau de données. Toutes les colonnes sont triables. Il a une date dans une colonne que j'ai formatée jj/mm/aaaa hh: mm: ss. Ceci est différent du format par défaut défini dans le doco, mais je devrais pouvoir définir mon propre format pour les formats non-américains. (Voir ci-dessous)Quel est le format de date correct pour une colonne Date dans YUI DataTable?

La classe DataTable fournit un ensemble de fonctions statiques intégrées pour formater certains types bien connus de données. Dans votre définition de la colonne, si vous définissez un de formatter de Colonne à YAHOO.widget.DataTable.formatDate, qui fonctionnent rendra les données de type date avec la syntaxe par défaut de « MM/JJ/AAAA ». Si vous souhaitez contourner un formateur intégré en faveur de votre choix, vous pouvez pointer le formateur d'une colonne vers une fonction personnalisée que vous définissez .

La table est générée à partir de la balise HTML, de sorte que les données sont conservées dans les balises "".

Cela me donne quelques plus d'indices sur les dates de chaîne compatibles javascript:

En général, le RecordSet prévoit données de maintien dans les types JavaScript natifs. Par exemple, une date devrait être une instance de date JavaScript, pas une chaîne comme "4/26/2005" afin de trier correctement . Conversion de types de données sous forme de données entre dans votre RecordSet est activé par la propriété de l'analyseur en les champs tableau de votre responseSchema

de DataSource

Je soupçonne que le je manque quelque chose dans le format de date. Alors qu'est-ce qu'une date de chaîne acceptable pour javascript, que Yui dataTable reconnaîtra, étant donné que je veux le formater comme "jj/mm/aaaa hh: mm: ss"?

+0

Demandez-vous de construire correctement le DataTable avec un objet Date() réel pour les données de champ? Ou, demandez-vous comment changer le format de texte de la SORTIE rendue? –

Répondre

1

Définir vos paramètres régionaux

YAHOO.util.DateLocale["pt-BR"] = YAHOO.lang.merge(YAHOO.util.DateLocale, { 
    x:"%d/%m/%Y" 
}); 

Et vos paramètres colonne comme suit

{key:"columnKey", label:"columnLabel", 
    formatter:function(container, record, column, data) { 
     container.innerHTML = YAHOO.util.Date.format(data, {format:"%x"}, "pt-BR"); 
    } 
} 
+0

Cela semble très bien merci. Je vous ferai savoir si cela fonctionne. +1 sur la compréhension détaillée de YUI seul, tiens à donner plus de voix pour cela! .. LOL – giulio

+0

@giulio Cela fonctionne bien! J'utilise YUI datatable sans mal de tête. Voir http://jsbin.com/ideha Un article fourni par moi-même –

0

Javascript est capable de construire une date en utilisant un DateString dans le format suivant:

new Date("April 22, 2010 14:15:23"); 

Si vous n'avez pas le contrôle du format de la DateString sur le côté serveur (ou ne veulent pas pour le modifier) ​​écrire une fonction d'analyse personnalisée qui prend la chaîne de dates et renvoie un objet Date nouvellement construit.

Vous pouvez utiliser cette fonction d'analyseur lors de la construction des données représentées dans votre DataTable.

rows:[{name:"John",born:customParser("[date string here"]}, 
     {name:"Bill",born:customParser("[date string here"]} 
    ] 

-OU-

Si vous utilisez le module DataSource de Yui (comme indiqué par votre deuxième boîte grise), vous pouvez enregistrer cette fonction d'analyseur sur le champ de date afin qu'il sera déjà une date () avant que le DataTable soit construit.

dataSource.responseSchema = { 
    . . . 
    fields: [ 
     ... 
     { key: "birth_dt", parser: customParser } 
     ... 
    ] 
    .... 
} 
0

Vous pouvez passer les dates du serveur au client dans le format que vous souhaitez, juste DataSource.responseSchema.fields mis parser champ à une fonction qui va l'analyser. Recherchez stringToDate dans dynamic data example.

Du côté client, vous pouvez afficher des dates dans tout autre format, fournissant une fonction dans le champ formatter dans ColumnDefs respectif.

Pour définir le format de date DataTable entier, définissez son option dateOptions; Vous pouvez également définir ColumnDef.dateOptions, tous comme décrit dans YAHOO.util.Date.format() docs pour le paramètre oConfig.

Pour toute configuration locale et DataTable, il devrait être

var myConfigs = { 
    initialRequest: ... 
    ... 
    // http://developer.yahoo.com/yui/docs/YAHOO.util.Date.html 
    dateOptions: {format: '%c'} 
    }; 

Vous pouvez également y mettre sLocale.