जवाबों:
आप उपयोग कर सकते हैं
$('#GridName').data('kendoGrid').dataSource.read(); <!-- first reload data source -->
$('#GridName').data('kendoGrid').refresh(); <!-- refresh current UI -->
मैं कभी रिफ्रेश नहीं करता।
$('#GridName').data('kendoGrid').dataSource.read();
अकेले मेरे लिए हर समय काम करता है।
$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();
हाल के एक प्रोजेक्ट में, मुझे कुछ कॉल के आधार पर केडो यूआई ग्रिड को अपडेट करना था, जो कि कुछ ड्रॉपडाउन चयनों पर हो रहा था। यहाँ मैं का उपयोग कर समाप्त हो गया है:
$.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()
वही उबेद छोड़ता है
आपको बस एक ईवेंट जोड़ना होगा । अपने kendoGrid के बाइंडिंग कोड में ईवेंट्स (ईवेंट्स => ईवेंट्स। सिंक ("KendoGridRefresh")) । अजाक्स रिजल्ट में रिफ्रेश कोड लिखने की जरूरत नहीं है।
@(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 फ़ाइल में निम्न ग्लोबल फ़ंक्शन जोड़ सकते हैं। तो, आप इसे अपने प्रोजेक्ट में सभी मेंडोज़ ग्रिड के लिए कह सकते हैं कि मेंडग्रिड ताज़ा करें।
function KendoGridRefresh() {
var grid = $('#document').data('kendoGrid');
grid.dataSource.read();
}
मेरे मामले में मेरे पास हर बार जाने के लिए एक कस्टम यूआरएल था; हालांकि परिणाम का स्कीमा वही रहेगा।
मैंने निम्नलिखित प्रयोग किया:
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 पर वापस जाना चाहता हूं। बस रीडिंग () फ़ंक्शन को कॉल करना आपको वर्तमान पृष्ठ पर रखेगा, भले ही नए परिणाम में कई पृष्ठ न हों। डेटासोर्स पर कॉलिंग .पृष्ठ (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
});
जहां संपत्ति किसी भी संपत्ति हो सकती है जैसे कि छांटना
बस कोड के नीचे लिखें
$('.k-i-refresh').click();
$("#theidofthegrid").data("kendoGrid").dataSource.data([ ]);
आप कोशिश कर सकते हैं:
$('#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>
विजेट्स का डिफ़ॉल्ट / अपडेटेड कॉन्फ़िगरेशन / डेटा स्वचालित रूप से एक संबंधित डेटा स्रोत से जुड़ने के लिए सेट है।
$('#GridId').data('kendoGrid').dataSource.read();
$('#GridId').data('kendoGrid').refresh();
refresh
आप अपने ग्रिड को रिफ्रेश करने के लिए नए मापदंडों को भेजने के साथ कार्रवाई और पृष्ठों को सेट कर सकते हैं जो आपको पसंद हैं:
var ds = $("#gridName").data("kendoGrid").dataSource;
ds.options.page = 1;
var parameters = {
id: 1
name: 'test'
}
ds.read(parameters);
इस उदाहरण में ग्रिड की क्रिया को 2 मापदंडों के मान से बुलाया जा रहा है और परिणाम प्राप्त करने के बाद ग्रिड का पेजिंग पेज 1 में है।
ताज़ा करने के लिए सबसे आसान तरीका ताज़ा () फ़ंक्शन का उपयोग करना है। जो इस प्रकार है:
$('#gridName').data('kendoGrid').refresh();
जब आप इस आदेश का उपयोग करके डेटा स्रोत को भी ताज़ा कर सकते हैं:
$('#gridName').data('kendoGrid').dataSource.read();
बाद वाला वास्तव में ग्रिड के डेटा स्रोत को पुनः लोड करता है। दोनों का उपयोग आपकी आवश्यकता और आवश्यकता के अनुसार किया जा सकता है।
$("#grd").data("kendoGrid").dataSource.read();
dataSource.read()
read
सर्वर से अनुरोध करेगा और केवल डेटा स्रोत पुनः लोड करेगा। यूआई में कोई बदलाव नहीं होगा।refresh
वर्तमान डेटा स्रोत से ग्रिड में आइटम को फिर से प्रस्तुत करेंगे। इसलिए दोनों की आवश्यकता है।