37

我想构建一个格式为日期 dd//MM/yyyy 的 Kendo UI Grid。但是,我发现的所有问题都通过代码Format("{0:d}"); . 所以,我尝试了下面的代码:

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;
        }

另一种格式可以正常工作,只是 DateTime 不起作用。

我得到了 Datetime = /Date(1377020142000)/ 的结果

4

8 回答 8

83

如果您想在剑道网格中显示日期时间格式,请执行此操作,

.Format("{0:dd/MM/yyyy}") 

或者

builder.ToString("dd/MM/yyyy");
于 2013-09-10T12:44:53.670 回答
29

其他解决方案很接近,但没有雪茄……这对我有用:

columns.Bound(c => c.CreatedDate).ClientTemplate("#= kendo.toString(kendo.parseDate(CreatedDate), 'dd/MM/yyyy') #");
于 2015-07-27T21:07:20.877 回答
13
.Format("{0:" + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + "}");

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat 中可能还有一些其他选项可能对您有用,如果这不是您想要的。

于 2013-09-17T19:04:36.553 回答
9

还可以使用:

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

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

于 2016-08-20T04:28:18.650 回答
4

试试这个,这会奏效。

.ClientTemplate("#= kendo.toString(kendo.parseDate(Date,'dd/MM/yyyy'), '" +  CurrentDateFormat + "') #");
于 2014-07-19T06:34:46.453 回答
1

核心问题在这里记录得非常好。将那里的答案与我发现的其他东西结合起来,这就是我必须做的才能让它在我的项目中工作。

在 C# 代码中:

.Template("#= kendo.toString(parseDate(" + field.Name + "), 'dd/MM/yyyy') #");

然后,创建一个 javascript 函数:

function parseDate(d) {
  d = new Date(parseInt(d.replace(/\/Date\((-?\d+)\)\//gi, "$1"), 10));
  return d;
}

这有点麻烦,但有效。

于 2014-12-29T23:53:44.303 回答
1

我不了解 Kendo UI,但在我看来,您想要传递字符串格式的日期而不是 DateTime 对象。

/Date(...)/输出看起来像来自 .Net 的 JSON 格式的日期。

myDateTime.ToString("dd/MM/yyyy");在将日期传递给控件之前,我会使用类似的东西将日期转换为字符串。

于 2013-09-10T12:33:56.207 回答
0

感谢您的回答:

我使用 ClientTemplate 并调用 javascript 函数在 Kendo 网格列中的 HH:MM:SS 中以秒为单位格式化持续时间:

                .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)
}

于 2019-06-03T08:47:22.040 回答