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) /

24
demandé sur leodeoliveira 2013-09-10 16:28:34

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");
63
répondu Jaimin 2013-09-10 12:44:53
.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.

12
répondu Bryan Hobbs 2013-09-17 19:04:36

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') #");
9
répondu user1477388 2015-07-27 21:07:20

peut également utiliser:

columns.Bound(c => c.DateCreate).Format("{0:G}")

comme dans http://docs.telerik.com/kendo-ui/framework/globalization/dateformatting

8
répondu piris 2016-08-20 04:28:18

essayez plutôt ceci, cela marchera.

.ClientTemplate("#= kendo.toString(kendo.parseDate(Date,'dd/MM/yyyy'), '" +  CurrentDateFormat + "') #");
4
répondu Milan 2014-07-19 06:34:46

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.

1
répondu Void 2013-09-10 12:33:56

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.

1
répondu JebaDaHut 2017-05-23 12:34:44