使用 MVC 包装器在剑道 UI 网格中格式化日期时间 asp.net
本文关键字:格式化 日期 时间 net asp 网格 UI 包装 MVC 使用 | 更新日期: 2023-09-27 18:30:45
我想构建一个格式为日期 dd//MM/yyyy 的剑道 UI 网格。但是,我发现的所有关于这个问题的问题,都用代码 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;
}
另一种格式工作正常,只是日期时间不起作用。
我有这个结果 日期时间 =/日期(1377020142000)/
在剑道网格中显示日期时间格式,请执行此操作,
.Format("{0:dd/MM/yyyy}")
或
builder.ToString("dd/MM/yyyy");
其他解决方案很接近,但没有雪茄... 以下是对我有用的方法:
columns.Bound(c => c.CreatedDate).ClientTemplate("#= kendo.toString(kendo.parseDate(CreatedDate), 'dd/MM/yyyy') #");
.Format("{0:" + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + "}");
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat 中可能还有一些其他选项,如果这不是您想要的,则可能适合您。
也可以使用:
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 + "') #");
我不知道剑道 UI,但在我看来,您想传递字符串格式的日期而不是 DateTime 对象。
/Date(...)/
输出看起来像 .Net 中 JSON 格式的日期。
我会使用 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;
}
这有点笨拙,但有效。
感谢您的回答:
我使用 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)
}