【问题标题】:Kendo Grid doesn't display JSON DatesKendo Grid 不显示 JSON 日期
【发布时间】:2014-10-14 18:05:34
【问题描述】:

我正在使用 Kendo Grid,它使用他们的 MVC Helpers 构建来显示一些远程 JSON 数据。

除日期列外,一切正常。

这是我的设置。

查看:

@(Html.Kendo().Grid<TrainingDTO>().Name("grid_training")
        .Columns(c => {
            c.Bound(a => a.Id).Width(50);
            c.Bound(a => a.Start).ClientTemplate("#= (Start == null) ? ' ' : kendo.toString(Start, 'dd-MM-yyyy') #");
            c.Bound(a => a.End).Format("{0:dd/MM/yyyy HH:mm:ss}");
            c.Bound(a => a.Description);
        })
        .Pageable()
        .Scrollable().DataSource(ds => ds.Ajax().PageSize(5).Model(m => m.Id(p => p.Id)).Read(R => R.Action("GridData", "Home", new { providerId = Model.Id }).Type(HttpVerbs.Post)))
                                    )

还有控制器:

        [HttpPost]
        public JsonResult GridData([DataSourceRequest]DataSourceRequest request) {


                var data = new Service().LoadSomeData().ToDataSourceResult(request, A => new {
                    Id = A.Id,
                    Start = A.Start,
                    End = A.End,
                    Description = A.Description
                });

                return Json(data, JsonRequestBehavior.AllowGet);
        }

返回(以 json 格式)

{
  "Data": [
    {
      "Id": 1,
      "Start": "\/Date(1412031600000)\/",
      "End": "\/Date(1415318400000)\/",
      "Description": "test teste test"
    }
  ],
  "Total": 1,
  "AggregateResults": null,
  "Errors": null
}

“开始”和“结束”列显示为空。 TrainingDTO POCO 上的这些属性是 DateTime Nullables(即 DateTime?)

我尝试了很多方法来格式化数据,但都无济于事。

有没有办法在网格上打印这些 JSON 日期(无需在控制器上将它们格式化为字符串)?

【问题讨论】:

    标签: asp.net-mvc json kendo-grid


    【解决方案1】:

    我以前也遇到过这个问题。

    我假设您希望使用英国日期格式而不是默认的美国格式。 如果您取消格式,我希望您会看到格式正确的日期。

    由于您似乎使用的是扁平模型(日期在复杂的视图模型中无法正常工作),因此最简单的做法是将文化文件添加到您的项目中,然后将其设置为 UK,以便正确获取所有内容.

    所以在你的布局页面中把这个放在剑道脚本之后:

     <script src="/Scripts/kendo/{you version here}/cultures/kendo.culture.en-GB.min.js"></script>
    
    
        <script type="text/javascript">
    
            kendo.culture("en-GB");
    
        </script>
    

    如果文化文件不是项目的一部分,只需通过 Telerik 升级并包含它们或将它们复制到项目中。

    【讨论】:

    • 你好,不,不是真的。即使删除格式化程序也不能使它工作。我已经包含了文化文件(pt-PT,但应该相同)并设置 kendo.culture
    • 如果您正在执行一些条件逻辑来检查,我假设日期时间是可为空的字段。如果您提供一个不可为空的日期时间会发生什么。如果您删除格式,实际呈现的是什么?是 json 格式的日期时间值还是别的什么。
    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多