Telerik MVC网格时区问题

时间:2014-04-15 01:07:29

标签: asp.net-mvc datetime telerik timezone telerik-grid

我正在使用遗留代码,使用telerik UI旧版本(没有剑道)的MVC 3,因此需要对日期格式和货币进行格式化,并设置当前文化与其工作的愿望文化,但是当我在Web服务器上进行了部署我注意到Grids datetime列如何根据客户端时区重新计算时间,这是不正确的,因为在同一个Web服务器上运行该应用程序的多个部署而客户端可能是不同的国家,那么我就是面临一个大麻烦。 telerik文档没有讨论“根据客户端时区设置自动转换日期”,这些组件有时会被弃用。

我在_Layout.cshtml中有这段代码

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

这是我的网格,它有2个日期时间列,都重新计算 当网格呈现时,我不知道如何避免这种情况,其他方式可能是在模型上使用get属性返回日期,如字符串,但是我需要花费更多时间,因为应用程序上有几个网格。 / p>

    @(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);

          })

1 个答案:

答案 0 :(得分: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();