Formater la date-heure dans la grille de kendo en utilisant asp.net MVC Wrapper
je veux construire une grille de Kendo UI avec la date de format JJ//MM/AAAA. Cependant, toutes les questions que j'ai trouvées à ce sujet, il a été résolu avec le code Format("{0:d}"); . Ainsi, j'ai 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 est fonctionne très bien, juste DateTime ne fonctionne pas.
j'ai eu ce résultat pour Datetime = / Date (1377020142000) /
7 réponses
si vous voulez afficher le format datetime dans la grille de kendo alors faites ceci,
.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 le système.Mondialisation.CultureInfo.CurrentCulture.DateTimeFormat qui pourrait 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 marchera.
.ClientTemplate("#= kendo.toString(kendo.parseDate(Date,'dd/MM/yyyy'), '" + CurrentDateFormat + "') #");
Je ne sais pas à propos de Kendo UI, mais il me semble que vous voulez passer une date formatée par une chaîne de caractères plutôt qu'un objet DateTime.
la sortie /Date(...)/
ressemble à une date formatée par JSON .Net.
Je convertirais la date en chaîne en utilisant quelque chose comme myDateTime.ToString("dd/MM/yyyy");
avant de la Passer au contrôle.
Le problème de fond est vraiment bien documenté ici . En combinant les réponses là-bas avec d'autres choses que j'ai trouvées, voici ce que j'ai dû faire pour que cela fonctionne sur mon projet.
dans le code C:
.Template("#= kendo.toString(parseDate(" + field.Name + "), 'dd/MM/yyyy') #");
ensuite, créer une fonction javascript:
function parseDate(d) {
d = new Date(parseInt(d.replace(/\/Date\((-?\d+)\)\//gi, ""), 10));
return d;
}
c'est un peu un kluge, mais ça marche.