繁体   English   中英

使用asp.net MVC Wrapper在Kendo UI Grid中格式化DateTime

[英]Format DateTime in Kendo UI Grid using asp.net MVC Wrapper

我想构建一个格式为日期dd // MM / yyyy的Kendo UI Grid。 但是,我发现的所有问题都是用代码格式(“{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不起作用。

我有这个结果的日期时间= /日期(1377020142000)/

如果要在kendo网格中显示日期时间格式,请执行此操作,

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

要么

builder.ToString("dd/MM/yyyy");
.Format("{0:" + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + "}");

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

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

columns.Bound(c => c.CreatedDate).ClientTemplate("#= kendo.toString(kendo.parseDate(CreatedDate), 'dd/MM/yyyy') #");

也可以用:

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

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

试试这个,这将有效。

.ClientTemplate("#= kendo.toString(kendo.parseDate(Date,'dd/MM/yyyy'), '" +  CurrentDateFormat + "') #");

我不知道Kendo UI但它看起来像你想要传递字符串格式化日期而不是DateTime对象。

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

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

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

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

这有点像kluge,但有效。

谢谢你的回答:

我使用ClientTemplate在一个Kendo网格列中以HH:MM:SS格式化持续时间(以秒为单位)并调用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) } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM