2016-04-28 4 views
0

Я пытаюсь получить и загрузить данные в сетку кендо с использованием некоторых параметров. Но когда я использую параметр даты, формат даты меняется, поэтому я показываю неправильные даты на стороне сервера.Формат даты меняется при извлечении данных с использованием Kendo Grid

В качестве параметра в качестве параметра использую: новую дату («01 апреля 2016 года»). Но на стороне сервера это становится ошибкой 04/01/2016.

function passFilterCstDetails() { 
 

 
     var statemenetInquiryParameter = {}; 
 

 
     statemenetInquiryParameter.isPrintZero = true; 
 
     statemenetInquiryParameter.isPrintPayments = true; 
 
     statemenetInquiryParameter.isPrintAdjust = true; 
 
     statemenetInquiryParameter.cst_stmt_from = new Date("April 01, 2016"); 
 
     statemenetInquiryParameter.cst_stmt_to = new Date("April 12, 2016"); 
 
     statemenetInquiryParameter.customerCode = 007; 
 

 
     return { 
 
      statemenetInquiryParameter: statemenetInquiryParameter 
 
     } 
 
    }
<div class="row"> 
 
        <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
 
         @(Html.Kendo().Grid<ServicePROWeb.ServiceProWCFService.CstTran>() 
 
          .Name("gridCustomerCstTranDetails") 
 
          .Columns(columns => 
 
          { 
 
           columns.Bound(p => p.cst_inv_date).Title("Invoice Date").HtmlAttributes(new { @style = "text-align: right;" }).Format(Session["DisplayFormat_GridDate"].ToString()).Width(80); 
 
           columns.Bound(p => p.cst_type).Title("Type").Width(80); 
 
           columns.Bound(p => p.cst_ih_invno).Format("{0:n2}").HtmlAttributes(new { @style = "text-align: right;" }).Filterable(false).Title("Invoice Number").Width(80); 
 
           columns.Bound(p => p.cst_dr_amount).Format("{0:n2}").HtmlAttributes(new { @style = "text-align: right;" }).Filterable(false).Title("Debit").Width(80); 
 
           columns.Bound(p => p.cst_cr_amount).Format("{0:n2}").HtmlAttributes(new { @style = "text-align: right;" }).Filterable(false).Title("Credit").Width(80); 
 
           columns.Bound(p => p.cst_dr_balance).Format("{0:n2}").HtmlAttributes(new { @style = "text-align: right;" }).Filterable(false).Title("Balance").Width(80); 
 
          }) 
 
          .Selectable() 
 
          .Sortable() 
 
          .Scrollable() 
 
          .Resizable(resize => resize.Columns(true)) 
 
          .HtmlAttributes(new { style = "cursor:pointer;height:auto;width:auto;margin-top: 0px;" }) 
 
          .DataSource(dataSource => dataSource 
 
          .Ajax() 
 
          .Read(read => read.Action("LoadCustomerStatementEnquiryDetails", "Stage").Data("passFilterCstDetails"))) 
 
         ) 
 
        </div> 
 
       </div>

public class StatemenetInquiryParameter 
{ 
    public decimal customerCode { get; set; } 
    public DateTime cst_stmt_from { get; set; } 
    public DateTime cst_stmt_to { get; set; } 
    public bool isPrintZero { get; set; } 
    public bool isPrintPayments { get; set; } 
    public bool isPrintAdjust { get; set; } 
} 

public ActionResult LoadCustomerStatementEnquiryDetails([DataSourceRequest]DataSourceRequest request, StatemenetInquiryParameter statemenetInquiryParameter) 
    { 
     List<CstTran> l = new List<CstTran>(); 

     for (int i = 0; i < 12; i++) 
     { 
      CstTran c = new CstTran(); 

      c.cst_inv_date = statemenetInquiryParameter.cst_stmt_from.AddDays(i); 
      c.cst_type = "I"; 
      c.cst_ih_invno = i + 1; 
      c.cst_dr_amount = i; 
      c.cst_cr_amount = 0; 
      c.cst_dr_balance = c.cst_dr_balance + i; 

      l.Add(c); 
     } 

     return Json(l.ToDataSourceResult(request)); 
    } 
+0

Итак, когда вы вытаскиваете значение обратно с сервера, оно дает вам 1 апреля или 4 января. Если это 4 января, то это простая проблема «глобализации», когда у вас есть часть вашего решения перевод между чем-то вроде «en-US» и «en-GB», например MMddyyyy vs ddMMyyyy, используя эту ссылку, может помочь: http://docs.telerik.com/kendo-ui/framework/globalization/overview –

ответ

0

Я тоже была эта проблема, я решил ее проверить формат данных в момент сохранения.

1- найти данные при сохранении

var dataS = $("#grid").data("kendoGrid").dataSource; 
var updatedData = dataS._data; 

2- проверить формат, а затем сохранить его, мой параметр данных rsrc_dt

var dateValue = updatedData[i].rsrc_dt; 
    var day; var year; var mon; 
    if (typeof dateValue === 'string' || dateValue instanceof String) { 
    day = dateValue.split('/')[0]; // use when date is not in correct string format 
    mon = dateValue.split('/')[1]; 
    year = dateValue.split('/')[2]; 
    var dateS = day + '/' + mon + '/' +year; 
    serverData[i].rsrc_dt = dateValue; 
    } 
    else if (dateValue instanceof Date) { 
    var date = new Date(updatedData[i].rsrc_dt); 
    year = date.getFullYear(); 
    day = date.getDate(); 
    day = day < 10 ? '0' + day : day 
    mon = date.getMonth(); 
    mon = mon + 1; 
    mon = mon < 10 ? '0' + mon : mon; 
    var dateF = day + "/" + mon + "/" + year; 
    serverData[i].rsrc_dt = dateF; 
    } 

3- Вы можете попробовать это также, дать формат данных в шаблоне поля, как этот один

 { field: "rsrc_dt", title: "Session Date", format: "{0:dd/MM/yyyy}", editor: dateTimeEditor, width: 73, attributes: { "class": "azN" }, }, 

4- Использование DateEditor

function dateTimeEditor(container, options) { 
    $('<input name="editableBlock" data-text-field="' + options.field + '" data-value-field="' + options.field + '" data-bind="value:' + options.field + '" data-format="' + options.format + '"/>') 
      .appendTo(container) 
      .kendoDatePicker({ min: btch_strt_dt }); 

} 
Смежные вопросы