답변:
당신이 사용할 수있는
$('#GridName').data('kendoGrid').dataSource.read(); <!-- first reload data source -->
$('#GridName').data('kendoGrid').refresh(); <!-- refresh current UI -->
$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();
최근 프로젝트에서 일부 드롭 다운 선택에서 발생하는 일부 호출을 기반으로 Kendo UI Grid를 업데이트해야했습니다. 다음은 내가 사용했던 것입니다.
$.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);
});
잘하면 이것은 당신에게 시간을 절약 할 것입니다.
이러한 답변 중 하나만이 read
약속 을 반환 한다는 사실을 얻지 못하므로 새로 고침을 호출하기 전에 데이터가로드 될 때까지 기다릴 수 있습니다.
$('#GridId').data('kendoGrid').dataSource.read().then(function() {
$('#GridId').data('kendoGrid').refresh();
});
데이터 수집이 인스턴트 / 동기화 인 경우에는 필요하지 않지만 즉시 리턴되지 않는 엔드 포인트에서 발생하는 것보다 더 많습니다.
실제로는 다릅니다.
$('#GridName').data('kendoGrid').dataSource.read()
uid
테이블 행 의 속성을 새로 고칩니다.
$('#GridName').data('kendoGrid').refresh()
같은 uid를 떠난다
해야 할 일은 kendoGrid 바인딩 코드에 이벤트 .Events (events => events.Sync ( "KendoGridRefresh")) 를 추가하는 것입니다 .Ajax 결과에 새로 고침 코드를 작성할 필요가 없습니다.
@(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();
$('#GridName').data('kendoGrid').refresh();
자동 새로 고침 기능은 여기를 참조하십시오
당신은 항상 사용할 수 있습니다 $('#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
유형 으로 선언하는 것을 잊지 마십시오
그리드를 새로 고칠 때 1 페이지로 돌아가고 싶습니다. read () 함수를 호출하면 새 결과에 많은 페이지가 없어도 현재 페이지를 유지합니다. 데이터 소스에서 .page (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();
}
}
아래 코드를 작성하십시오
$('.k-i-refresh').click();
read
는 서버를 요청하고 데이터 소스를 다시로드 합니다 . UI에는 변경 사항이 없습니다.refresh
현재 데이터 소스에서 그리드로 항목을 다시 렌더링합니다. 그래서 두 가지가 모두 필요합니다.