Akb*_*ari 0 kendo-ui kendo-grid kendo-asp.net-mvc
我有一个日期转换函数,它接受一个datetime参数并返回string. 如何使用此函数格式化DateKendo Grid 中的列?
我已经尝试了以下代码,但没有一个起作用
columns.Bound(x => x.ModifyDate).ClientTemplate(@Utility.GetPersianDate((DateTime)"#: ModifyDate #"));
columns.Bound(x => x.ModifyDate).Template(@<text>@Utility.GetPersianDate((DateTime)@item.ModifyDate)</text>);
columns.Bound(x => x.ModifyDate).Format(@Utility.GetPersianDate(Convert.ToDateTime("#: ModifyDate")));
Run Code Online (Sandbox Code Playgroud)
我也尝试在服务器端转换它,但这是不可能的,因为格式化的日期未被识别为有效日期。这并不重要,因为它只是为了展示。用户不应更改或输入该日期。如果没有任何效果,我可能会考虑在服务器上使用string而不是DateTime转换它。
您的代码不起作用的原因有多种。
columns.Bound(x => x.ModifyDate).ClientTemplate(@Utility.GetPersianDate((DateTime)"#: ModifyDate #"));
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为服务器代码首先运行,因此"#: ModifyDate #"无法转换为DateTime. 它应该是InvalidOperationException什么。
columns.Bound(x => x.ModifyDate).Template(@<text>@Utility.GetPersianDate((DateTime)@item.ModifyDate)</text>);`
Run Code Online (Sandbox Code Playgroud)
由于奇怪的Template调用,第二行不起作用。它应该这样调用:.Template(item => Utility.GetPersianDate(item.ModifyDate))
除非您使用 Ajax 绑定,否则它将完成这项工作,在这种情况下您不能使用Template方法。
columns.Bound(x => x.ModifyDate).Format(@Utility.GetPersianDate(Convert.ToDateTime("#: ModifyDate")));`
Run Code Online (Sandbox Code Playgroud)
第三行不起作用,因为Format应该调用 like Format("{0:D}"),并且它不能接受任何其他参数。
因此,如果您没有使用 Ajax 绑定,那么正确的Template调用应该可以解决问题。如果这样做,那么您可以在服务器端转换它或编写一个 Javascript 函数将日期转换为波斯语并ClientTemplate像这样调用它:.ClientTemplate("# convertToPersian(ModifyDate) #")
我个人建议您在服务器端这样做:
public class SomeView
{
public DateTime ModifyDate { get; set; }
public string ModifyDatePersian { get { return Utility.GetPersianDate(ModifyDate); } }
}
Run Code Online (Sandbox Code Playgroud)
并用它在这样的客户端:.ClientTemplate("#: ModifyDatePersian) #")。
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |