2012-11-27 28 views
8

Ho una griglia di kendo con un campo data nell'origine dati. Quando si visualizza il campo, utilizzo un modello per visualizzare la data nel formato data UK 'gg/MM/aaaa'. Il problema è quando si effettua il filtraggio, non so come visualizzare il filtro della data nel formato UK.kendo ui grid datasource filter date format

Un altro problema che sto riscontrando è che non esiste un tipo data/ora, solo la data, quindi può filtrare solo per date e non per data.

Qualsiasi aiuto o idea sarebbe apprezzato.

Questa è la vista parziale (cshtml)

<script type="text/javascript"> 
$(document).ready(function() { 
    var date = new Date(); 
    var dateString = date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear(); 
    var url = '@Url.Action(AccountTypeController.GetAllocationGridData, new {id = Model.Id})'; 

    var dataSource = new kendo.data.DataSource({ 
     serverPaging: true, 
     serverSorting: true, 
     serverFiltering: true, 
     pageSize: 10, 
     transport: { 
      read: { 
       type: 'post', 
       dataType: 'json', 
       url: url 
      }, 
      parameterMap: function(options) { 
       if (options.filter) { 
        for (var i = 0; i < options.filter.filters.length; i++) { 
         if (options.filter.filters[i].field == 'Start' || options.filter.filters[i].field == 'End') { 
          options.filter.filters[i].value = kendo.toString(options.filter.filters[i].value, "MM/dd/yyyy"); 
         } 
        } 
       } 
       return options; 
      } 
     }, 
     schema: { 
      data: 'Data', 
      total: 'Count', 
      model: { 
       id: 'Id', 
       fields: { 
        Id: { type: 'number' }, 
        Start: { type: 'date' }, 
        End: { type: 'date' }, 
        Allocation: { type: 'number' } 
       } 
      } 
     }, 
     sort: { 
      field: "Start", 
      dir: "asc" 
     }, 
     filter:{ 
      logic: "and", 
      filters: [ 
       { 
        field: "End", 
        operator: "gt", 
        value: dateString 
       } 
      ] 
     } 
    }); 

    $('#account-allocation').kendoGrid({ 
     height: 383, 
     dataSource: dataSource, 
     columns: [ 
      { 
       field: 'Start', 
       title: 'Start Date', 
       template: '#= kendo.toString(Start,"dd/MM/yyyy HH:mm") #' 
      }, 
      { 
       field: 'End', 
       title: 'End Date', 
       template: '#= kendo.toString(End,"dd/MM/yyyy HH:mm") #' 
      }, 
      { 
       field: 'NoSpaces', 
       title: 'Number of Spaces', 
       filterable: false 
      }, 
      { 
       field: 'Id', 
       filterable: false, 
       title: 'Actions', 
       template: '<a class="link-lightbox" href="@Url.Action(AccountTypeController.UpdateAllocationAction1, AccountTypeController.Name)/#= Id #"><img src="@Url.Content("~/Content/img/grid-update.png")" alt="Update"/></a>', 
       width: 75 
      } 
     ], 
     filterable: true, 
     sortable: false, 
     scrollable: false, 
     pageable: true   
    }); 
</script> 

<div class="panel panel-w"> 
    <h2>@Model.Name Allocations 
      <a href="@Url.Action(AccountTypeController.SetAllocationAction1, new { id = Model.Id })" class="button link-lightbox"><span class="edit">Set Account Type Allocation</span></a> 
    </h2> 
    <div id="account-allocation"></div> 
</div> 
+0

Inoltre, si potrebbe provare a vedere qui: http://stackoverflow.com/questions/28232575/kendoui-grid-filter-date-format –

risposta

9

primo include il file JavaScript corrispondente alla cultura inglese:

<script src="http://cdn.kendostatic.com/2012.2.710/js/cultures/kendo.culture.en-GB.min.js"></script> 

quindi richiamare kendo.culture per impostare la cultura corrente:

kendo.culture("en-GB"); 

Kendo Grid utilizzerà automaticamente il formato 'gg/MM/aaaa'.

Ulteriori informazioni su come l'interfaccia utente di Kendo si occupa della globalizzazione sono disponibili nello documentation.

Ecco una demo live: http://jsbin.com/onetol/1/edit

+0

Lavorati perfettamente. Grazie! –