Reloading/refreshing Kendo Grid

Kendo UiKendo Grid

Kendo Ui Problem Overview


How to reload or refresh a Kendo Grid using Javascript?

It is often required to reload or refresh a grid after sometime or after a user action.

Kendo Ui Solutions


Solution 1 - Kendo Ui

You can use

$('#GridName').data('kendoGrid').dataSource.read(); <!--  first reload data source -->

$('#GridName').data('kendoGrid').refresh(); <!--  refresh current UI -->

Solution 2 - Kendo Ui

I never do refresh.

$('#GridName').data('kendoGrid').dataSource.read();

alone works for me all the time.

Solution 3 - Kendo Ui

$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();

Solution 4 - Kendo Ui

In a recent project, I had to update the Kendo UI Grid based on some calls, that were happening on some dropdown selects. Here is what I ended up using:

$.ajax({
        url: '/api/....',
        data: { myIDSArray: javascriptArrayOfIDs },
        traditional: true,
        success: function(result) {
            searchResults = result;
        }
    }).done(function() {
        var dataSource = new kendo.data.DataSource({ data: searchResults });
        var grid = $('#myKendoGrid').data("kendoGrid");
        dataSource.read();
        grid.setDataSource(dataSource);
    });

Hopefully this will save you some time.

Solution 5 - Kendo Ui

Not a single one of these answers gets the fact that read returns a promise, which means you can wait for the data to load before calling refresh.

$('#GridId').data('kendoGrid').dataSource.read().then(function() {
    $('#GridId').data('kendoGrid').refresh();
});

This is unnecessary if your data grab is instant/synchronous, but more than likely it's coming from an endpoint that won't return immediately.

Solution 6 - Kendo Ui

If you do not want to have a reference to the grid in the handler, you can use this code:

 $(".k-pager-refresh").trigger('click');

This will refresh the grid, if there is a refresh button. The button can be enabled like so:

[MVC GRID DECLARATION].Pageable(p=> p.Refresh(true))

Solution 7 - Kendo Ui

Actually, they are different:

  • $('#GridName').data('kendoGrid').dataSource.read() refreshes the uid attributes of the table row

  • $('#GridName').data('kendoGrid').refresh() leaves the same uid

Solution 8 - Kendo Ui

What you have to do is just add an event .Events(events => events.Sync("KendoGridRefresh")) in your kendoGrid binding code.No need to write the refresh code in ajax result.

@(Html.Kendo().Grid<Models.DocumentDetail>().Name("document")
    .DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Model(model => model.Id(m => m.Id))        
    .Events(events => events.Sync("KendoGridRefresh"))    
    )
      .Columns(columns =>
      {
          columns.Bound(c => c.Id).Hidden();              
          columns.Bound(c => c.UserName).Title(@Resources.Resource.lblAddedBy);                           
      }).Events(e => e.DataBound("onRowBound"))
          .ToolBar(toolbar => toolbar.Create().Text(@Resources.Resource.lblNewDocument))
          .Sortable()          
          .HtmlAttributes(new { style = "height:260px" })          
  )

And you can add the following Global function in any of your .js file. so, you can call it for all the kendo grids in your project to refresh the kendoGrid.

function KendoGridRefresh() {
    var grid = $('#document').data('kendoGrid');
    grid.dataSource.read();
}

Solution 9 - Kendo Ui

In my case I had a custom url to go to each time; though the schema of the result would remain the same.
I used the following:

var searchResults = null;
$.ajax({
        url: http://myhost/context/resource,
        dataType: "json",
        success: function (result, textStatus, jqXHR) {
            //massage results and store in searchResults
            searchResults = massageData(result);
        }
    }).done(function() {
        //Kendo grid stuff
        var dataSource = new kendo.data.DataSource({ data: searchResults });
        var grid = $('#doc-list-grid').data('kendoGrid');
        dataSource.read();
        grid.setDataSource(dataSource);
    });

Solution 10 - Kendo Ui

I used Jquery .ajax to get data. In order to reload the data into current grid, I need to do the following:

.success (function (result){
    $("#grid").data("kendoGrid").dataSource.data(result.data);
})

Solution 11 - Kendo Ui

You can use the below lines

$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();

For a auto refresh feature have a look here

Solution 12 - Kendo Ui

By using following code it automatically called grid's read method and again fill grid

$('#GridName').data('kendoGrid').dataSource.read();

Solution 13 - Kendo Ui

An alternative way to reload the grid is

$("#GridName").getKendoGrid().dataSource.read();

Solution 14 - Kendo Ui

You can always use $('#GridName').data('kendoGrid').dataSource.read();. You don't really need to .refresh(); after that, .dataSource.read(); will do the trick.

Now if you want to refresh your grid in a more angular way, you can do:

<div kendo-grid="vm.grid" id="grid" options="vm.gridOptions"></div>

vm.grid.dataSource.read();`

OR

vm.gridOptions.dataSource.read();

And don't forget to declare your datasource as kendo.data.DataSource type

Solution 15 - Kendo Ui

I want to go back to page 1 when I refresh the grid. Just calling the read() function will keep you on the current page, even if the new results don't have that many pages. Calling .page(1) on the datasource will refresh the datasource AND return to page 1 but fails on grids that aren't pageable. This function handles both:

function refreshGrid(selector) {
     var grid = $(selector);
     if (grid.length === 0)
         return;

     grid = grid.data('kendoGrid');
     if (grid.getOptions().pageable) {
         grid.dataSource.page(1);
     }
     else {
         grid.dataSource.read();
     }
}

Solution 16 - Kendo Ui

In order to do a complete refresh, where the grid will be re-rendered alongwith new read request, you can do the following:

 Grid.setOptions({
      property: true/false
    });

Where property can be any property e.g. sortable

Solution 17 - Kendo Ui

You may try:

    $('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();

Solution 18 - Kendo Ui

Just write below code

$('.k-i-refresh').click();

Solution 19 - Kendo Ui

$("#theidofthegrid").data("kendoGrid").dataSource.data([ ]);

Solution 20 - Kendo Ui

If you are desiring the grid to be automatically refreshed on a timed basis, you can use the following example which has the interval set at 30 seconds:

   <script type="text/javascript" language="javascript">
      $(document).ready(function () {
         setInterval(function () {
            var grid = $("#GridName").data("kendoGrid");
            grid.dataSource.read();
         }, 30000);
      });
   </script>

Solution 21 - Kendo Ui

You can also refresh your grid with sending new parameters to Read action and setting pages to what you like :

var ds = $("#gridName").data("kendoGrid").dataSource;
ds.options.page = 1;
var parameters = {
    id: 1
    name: 'test'
}
ds.read(parameters);

In this example read action of the grid is being called by 2 parameters value and after getting result the paging of the grid is in page 1.

Solution 22 - Kendo Ui

The default/updated configuration/data of the widgets is set to automatically bind to an associated DataSource.

$('#GridId').data('kendoGrid').dataSource.read();
$('#GridId').data('kendoGrid').refresh();

Solution 23 - Kendo Ui

The easiest way out to refresh is using the refresh() function. Which goes like:

$('#gridName').data('kendoGrid').refresh();

while you can also refresh the data source using this command:

$('#gridName').data('kendoGrid').dataSource.read();

The latter actually reloads the data source of the grid. The use of both can be done according to your need and requirement.

Solution 24 - Kendo Ui

I see that a lot of answers here suggest calling both dataSource.read and grid.refresh, however, internally the grid listens for dataSource changes and upon a change it will refresh itself. In other words executing both dataSource.read and grid.refresh will result in refreshing the grid twice, which is unnecessary. Calling just dataSource.read is enough.

Solution 25 - Kendo Ui

My solution is:

var gridObj = $('#GridName').data('kendoGrid');
gridObj.dataSource.read();
gridObj.refresh();

Works also for other object functions

Solution 26 - Kendo Ui

$("#grd").data("kendoGrid").dataSource.read();

Solution 27 - Kendo Ui

$('#GridName').data('kendoGrid').dataSource.read(); //first you have to read the datasource data $('#GridName').data('kendoGrid').refresh(); // after that you can refresh

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOxonView Question on Stackoverflow
Solution 1 - Kendo UiJaiminView Answer on Stackoverflow
Solution 2 - Kendo UiPurna PillaView Answer on Stackoverflow
Solution 3 - Kendo UiOxonView Answer on Stackoverflow
Solution 4 - Kendo UiasuciuView Answer on Stackoverflow
Solution 5 - Kendo UiZachary DowView Answer on Stackoverflow
Solution 6 - Kendo Uid.popovView Answer on Stackoverflow
Solution 7 - Kendo UiIgnas PaplauskasView Answer on Stackoverflow
Solution 8 - Kendo UiMilanView Answer on Stackoverflow
Solution 9 - Kendo UiAmit KapoorView Answer on Stackoverflow
Solution 10 - Kendo UioopsdazieView Answer on Stackoverflow
Solution 11 - Kendo UiNitin RawatView Answer on Stackoverflow
Solution 12 - Kendo UiJatin PatelView Answer on Stackoverflow
Solution 13 - Kendo UivineelView Answer on Stackoverflow
Solution 14 - Kendo UiKristy KavadaView Answer on Stackoverflow
Solution 15 - Kendo UiAndyMcKennaView Answer on Stackoverflow
Solution 16 - Kendo UiFaran ShabbirView Answer on Stackoverflow
Solution 17 - Kendo UiKunvar SinghView Answer on Stackoverflow
Solution 18 - Kendo Uiuser2951849View Answer on Stackoverflow
Solution 19 - Kendo UiBrownbagger11View Answer on Stackoverflow
Solution 20 - Kendo Uisonyisda1View Answer on Stackoverflow
Solution 21 - Kendo UisajadreView Answer on Stackoverflow
Solution 22 - Kendo Uiparvezalam khanView Answer on Stackoverflow
Solution 23 - Kendo UijishuraajnathView Answer on Stackoverflow
Solution 24 - Kendo UiGeorgi YankovView Answer on Stackoverflow
Solution 25 - Kendo UiSeverinView Answer on Stackoverflow
Solution 26 - Kendo UiAshraful IslamView Answer on Stackoverflow
Solution 27 - Kendo UiAli SoussiView Answer on Stackoverflow