2015-07-23 4 views
0

У меня есть сетка кендо с данными, заполняемыми с использованием запроса ajax.kendo grid с java.util.Date не работает

модель возвращается из контроллера имеет java.util.Date поле, называемое someDate и возвращаемые данные в формате JSON для этой области, как

{"total":3, 
"data":[ 
{"someDate":1433116800000,"someValue":111.00}, 
{"someDate":1444116800000,"someValue":222.00}, 
{"someDate":1455116800000,"someValue":333.00}]} 

dataSouce, как показано ниже:

"dataSource": { 
     "schema": { 
      "total":"total", 
      "data":"data" 
     }, 
     "transport":{ 
      "parameterMap":function parameterMap(options, operation) { 
       if(operation==="read"){ 
        return JSON.stringify(options); 
       } else { 
        return JSON.stringify(options.models); 
       } 
      }, 
      "read":{ 
       "dataType":"json", 
       "contentType":"application/json", 
       "type":"POST", 
       url : "${ajaxGetData}&param="+someParam 
      } 
     } 

columns в сетка такая как

"columns": 
    [{ 
     "field":"someValue", 
     "title":"Some Value", 
     "type":"numeric" 
    },{ 
     "field":"someDate", 
     "title":"Date", 
     "type":"date", 
     format:"{0:yyyy-MM-dd hh:mm:ss tt}" 
    } 

Проблема в том, что дата и время отображаются неправильно. Если я использую шаблон, я должен удалить "type":"date", чтобы он работал, однако фильтры не работают должным образом.

template:'#= kendo.toString(new Date(someDate), "yyyy/MM/dd hh:mm:ss tt") #' 

Как показать Date в определенном формате "yyyy/MM/dd hh:mm:ss tt".

Это JS Fiddle может помочь (но не имеет точную структуру JSon с данными и общее)

ответ

1

Будет ли возможность использовать формат ISO 8601 для вас даты, если это возможно дата типа в определении модели должен работать (если вы используете библиотеку взять GSON взгляд here)

редактировать

Согласно комментариям, вы можете сделать использование schema.parse, образец этого с помощью условия скрипки будет вот ОК:

var grid = $("#grid").kendoGrid({ 
    dataSource: { 
     data: createRandomData(10), 
     schema: { 
      model: { 
       fields: { 
        FirstName: { type: "string" }, 
        LastName: { type: "string" }, 
        City: { type: "string" }, 
        Title: { type: "string" }, 
        BirthDate: { type: "date" }, 
        Age: { type: "number" } 
       } 
      }, 
      parse: function(response) { 
        var products = []; 
        for (var i = 0; i < response.length; i++) { 
         response[i].BirthDate = new Date(response[i].BirthDate); 
        } 
        return response; 
       } 
     }, 
     pageSize: 10 
    }, 
    height: 500, 
    scrollable: true, 
    sortable: true, 
    selectable: true, 
    change:onChangeSelection,    
    filterable: true, 
    pageable: true, 
    columns: [ 
     { 
      field: "FirstName", 
      title: "First Name" 
     }, 
     { 
      field: "LastName", 
      title: "Last Name" 
     }, 
     { 
      field: "City" 
     }, 
     { 
      field: "Title" 
     }, 
     { 
      field: "BirthDate", 
      title: "Birth Date", 
      //template: '#= kendo.toString(BirthDate,"MM/dd/yyyy") #' 
     }, 
     { 
      field: "Age" 
     } 
    ] 
}).data("kendoGrid"); 

Надеюсь, это сработает.

+0

Итак, вы предполагаете, что 'java.util.Date' отправляет json, поскольку он вообще не работает с KendoGrid? – ughai

+0

Ответ отредактирован, надеюсь, он поможет вам @ughai. – dnlgmzddr

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