23 ответов:
можно использовать
$('#GridName').data('kendoGrid').dataSource.read(); $('#GridName').data('kendoGrid').refresh();
Я никогда не обновляю .
$('#GridName').data('kendoGrid').dataSource.read();один работает для меня все время.
в недавнем проекте мне пришлось обновить сетку Kendo UI на основе некоторых вызовов,которые происходили в некоторых выпадающих списках. Вот что я в конечном итоге с помощью:
$.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); });надеюсь, это сэкономит вам некоторое время.
Если вы не хотите иметь ссылку на таблицу в обработчик, вы можете использовать этот код:
$(".k-pager-refresh").trigger('click');это обновит сетку, если есть кнопка Обновить. Кнопка может быть включена следующим образом:
[MVC GRID DECLARATION].Pageable(p=> p.Refresh(true))
что вам нужно сделать, это просто добавить событие .События(события => события.Sync ("KendoGridRefresh")) в ваш код привязки kendoGrid.Не нужно писать код "обновить" в результате "Аякс".
@(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" }) )и вы можете добавить следующую глобальную функцию в любой из ваших .js файл. таким образом, вы можете вызвать его для всех сеток кендо в вашем проекте, чтобы обновить kendoGrid.
function KendoGridRefresh() { var grid = $('#document').data('kendoGrid'); grid.dataSource.read(); }
в моем случае у меня был пользовательский url-адрес для перехода каждый раз; хотя схема результата останется прежней.
Я использовал следующее: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); });
на самом деле, они разные:
$('#GridName').data('kendoGrid').dataSource.read()обновлениеuidатрибуты строки таблицы
$('#GridName').data('kendoGrid').refresh()оставляет тот же uid
вы можете использовать следующие строки
$('#GridName').data('kendoGrid').dataSource.read(); $('#GridName').data('kendoGrid').refresh();для функции автоматического обновления посмотреть здесь
используя следующий код, он автоматически вызывал метод чтения сетки и снова заполнял сетку
$('#GridName').data('kendoGrid').dataSource.read();
альтернативным способом перезагрузки сетки является
$("#GridName").getKendoGrid().dataSource.read();
вы всегда можете использовать
$('#GridName').data('kendoGrid').dataSource.read();. Вам действительно не нужно.refresh();после этого,.dataSource.read();будет делать трюк.теперь, если вы хотите обновить сетку более угловым способом, вы можете сделать:
<div kendo-grid="vm.grid" id="grid" options="vm.gridOptions"></div> vm.grid.dataSource.read();`или
vm.gridOptions.dataSource.read();и не забудьте указать свой источник как
kendo.data.DataSourceтип
я использовал Jquery .AJAX для получения данных. Для того, чтобы перезагрузить данные в текущую сетку, мне нужно сделать следующее:
.success (function (result){ $("#grid").data("kendoGrid").dataSource.data(result.data); })
ни один из этих ответов становится тот факт, что
readвозвращает обещание, которое означает, что вы можете дождаться загрузки данных перед вызовом обновления.$('#GridId').data('kendoGrid').dataSource.read().then(function() { $('#GridId').data('kendoGrid').refresh(); });это не нужно, если ваш захват данных является мгновенным / синхронным, но более чем вероятно, что он исходит от конечной точки, которая не вернется немедленно.
Я хочу вернуться на страницу 1, Когда я обновляю сетку. Просто вызов функции read () позволит вам оставаться на текущей странице, даже если в новых результатах не так много страниц. Зовущий.Страница (1) на источнике данных обновит источник данных и вернется на страницу 1, но не будет работать в сетках, которые не доступны для просмотра. Эта функция обрабатывает оба:
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(); } }
чтобы выполнить полное обновление, где сетка будет повторно отображена вместе с новым запросом на чтение, вы можете сделать следующее:
Grid.setOptions({ property: true/false });где свойство может быть любым свойством, например sortable
по умолчанию / обновленная конфигурация / данные виджетов автоматически привязываются к соответствующему источнику данных.
$('#GridId').data('kendoGrid').dataSource.read(); $('#GridId').data('kendoGrid').refresh();
можно попробовать:
$('#GridName').data('kendoGrid').dataSource.read(); $('#GridName').data('kendoGrid').refresh();
Если вы хотите, чтобы сетка автоматически обновлялась по времени, вы можете использовать следующий пример, который имеет интервал, установленный в 30 секунд:
<script type="text/javascript" language="javascript"> $(document).ready(function () { setInterval(function () { var grid = $("#GridName").data("kendoGrid"); grid.dataSource.read(); }, 30000); }); </script>
самый простой способ обновления-использовать функцию refresh (). Который идет как:
$('#gridName').data('kendoGrid').refresh();в то время как вы также можете обновить источник данных с помощью этой команды:
$('#gridName').data('kendoGrid').dataSource.read();последний фактически перезагружает источник данных сетки. Использование обоих может быть сделано в соответствии с вашими потребностями и требованиями.
Comments