Je veux construire une grille d'interface utilisateur Kendo avec le format date jj // MM/aaaa. Cependant, toutes les questions que j'ai trouvées à ce sujet ont été résolues avec le code Format ("{0: d}");. J'ai donc essayé comme un code ci-dessous:
GridBoundColumnBuilder<TModel> builder = par.Bound(field.Name);
switch (field.Type.Type)
{
case CType.Boolean:
builder = builder.ClientTemplate(string.Format("<input type='checkbox' #= {0} ? checked='checked' : '' # disabled='disabled' ></input>", field.Name));
break;
case CType.Datetime:
builder = builder.Format("{0:d}");
break;
case CType.Decimal:
case CType.Double:
builder = builder.Format("{0:0.00}");
break;
}
Un autre format fonctionne très bien, juste DateTime ne fonctionne pas.
J'ai eu ce résultat pour Datetime =/Date (1377020142000) /
Si vous souhaitez afficher le format datetime dans la grille kendo, faites-le,
.Format("{0:dd/MM/yyyy}")
Ou
builder.ToString("dd/MM/yyyy");
.Format("{0:" + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + "}");
Il peut y avoir d'autres options dans System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat qui pourraient fonctionner pour vous si ce n'est pas ce que vous voulez.
Les autres solutions étaient proches mais pas de cigare ... Voici ce qui a fonctionné pour moi:
columns.Bound(c => c.CreatedDate).ClientTemplate("#= kendo.toString(kendo.parseDate(CreatedDate), 'dd/MM/yyyy') #");
Peut également utiliser:
columns.Bound(c => c.DateCreate).Format("{0:G}")
Comme dans http://docs.telerik.com/kendo-ui/framework/globalization/dateformatting
Essayez plutôt ceci, cela fonctionnera.
.ClientTemplate("#= kendo.toString(kendo.parseDate(Date,'dd/MM/yyyy'), '" + CurrentDateFormat + "') #");
Le problème principal est très bien documenté ici . En combinant les réponses là-bas avec d'autres trucs que j'ai trouvés, voici ce que je devais faire pour le faire fonctionner sur mon projet.
Dans le code C #:
.Template("#= kendo.toString(parseDate(" + field.Name + "), 'dd/MM/yyyy') #");
Ensuite, créez une fonction javascript:
function parseDate(d) {
d = new Date(parseInt(d.replace(/\/Date\((-?\d+)\)\//gi, "$1"), 10));
return d;
}
C'est un peu kluge, mais ça marche.
Je ne connais pas l'interface utilisateur de Kendo, mais il me semble que vous souhaitez passer une date au format chaîne plutôt qu'un objet DateTime.
La sortie /Date(...)/
ressemble à une date au format JSON de .Net.
Je convertirais la date en une chaîne en utilisant quelque chose comme myDateTime.ToString("dd/MM/yyyy");
avant de la passer au contrôle.
Merci pour vos réponses:
Je formate une durée en secondes en HH: MM: SS dans une colonne de grille Kendo en utilisant un ClientTemplate et en appelant une fonction javascript:
.ClientTemplate("#= secToHHMMSS(DurationInSeconds) # ")
.Title("Duration")
.Width(150);
function secToHHMMSS(s) {
f = Math.floor;
g = (n) => ('00' + n).slice(-2);
return f(s / 3600) + ':' + g(f(s / 60) % 60) + ':' + g(s % 60)
}