2014-04-15 121 views
0

我正在使用旧版代码,使用telerik UI旧版本(无kendo)的MVC 3,因此需要对dateformats和货币进行glabalize,并将currentCulture设置为希望文化但是当我在Web服务器上进行部署时,我注意到Grids datetime列根据客户端时区重新计算时间,这是不正确的,因为在同一个Web服务器上运行该应用程序的多个部署,并且客户端可能是不同的国家/地区,那我就面临很大的麻烦。 telerik文档没有提到“根据客户端时区设置自动转换日期”,这些组件有时不推荐使用。Telerik MVC grid timezone问题

我有这样的代码在_Layout.cshtml

Html.Telerik().ScriptRegistrar() 
    .OnDocumentReady(@<text></text>) 
    .Globalization(true)) 

这是我的网格,它有2个datetime列,两者都重新计算 当电网呈现,我不知道该怎么避免这种情况,其他方式可能是在模型上使用get属性来返回日期,如字符串,但该workarround我会花更多的时间,因为应用程序上有几个网格。

@(Html.Telerik().Grid<Models.AppointmentModels>(_AppointmentList).Name("Appointment").DataKeys(dataKeys => dataKeys.Add(o => o.AppointmentID)).DataBinding(dataBinding => dataBinding.Ajax() 
.Select("GetCRMAppointments", "Opportunity") 
.Update("UpdateCRMAppointments", "Opportunity") 
.Delete("DeleteCRMAppointments", "Opportunity")) 
.Columns(columns => 
      { 

       columns.Bound(o => o.StartTime).Title("start date").Width(140); 
       columns.Bound(o => o.EndTime).Title("End Date").Width(140); 

      }) 
+0

我的Asp.net网站上也有类似的问题。我结束了使用一个类来转换每个网站所需的日期时间。 – FeliceM

回答

0

我刚才也遇到了这个问题。我只对DateTime值的时间部分感兴趣。我通过向我的模型添加格式化的字符串值并将其用作View中的ClientTemplate来解决此问题。

型号代码:

[DisplayName("Start Time")] 
[UIHint("Time")] 
[DataType(DataType.Time)] 
public DateTime StartTime { get; set; } 
//Formatted string below. Your formatting may vary 
public string StartTimeString { get { return StartTime.ToString("t"); } } 

列在查看绑定:

columns.Bound(x => x.StartTime).ClientTemplate("<#= StartTimeString #>").Width(50).ReadOnly();