কেন্দো গ্রিড পুনরায় লোড করা / রিফ্রেশ করছে


171

কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে কোনও কেন্দো গ্রিড পুনরায় লোড বা রিফ্রেশ করবেন?

এটি প্রায়শই কোনও সময়ের পরে বা ব্যবহারকারীর ক্রিয়া পরে গ্রিডটি পুনরায় লোড বা রিফ্রেশ করা প্রয়োজন।

উত্তর:


314

তুমি ব্যবহার করতে পার

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

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

19
@ জেসপ্রি readসার্ভারটির জন্য অনুরোধ করবে এবং কেবল ডেটা উত্স পুনরায় লোড করবে। ইউআই-তে কোনও পরিবর্তন হবে না। refreshবর্তমান ডাটাসোর্স থেকে গ্রিডে আইটেমগুলি পুনরায় রেন্ডার করবে। এজন্য উভয়েরই প্রয়োজন।
বটিস

37
আমি মনে করি না কেন্দোর সর্বশেষ সংস্করণে আপনার রিফ্রেশ দরকার। যেমন এটি না করে সূক্ষ্মভাবে কাজ করছে বলে মনে হচ্ছে
গ্রামীমিলার

2
হ্যাঁ! এটি ট্রিলিস্টেও কাজ করে: $ ('# গ্যান্ট')। $ ( '# Gantt') তথ্য ( 'kendoTreeList') রিফ্রেশ ()।।
হার্নাল্ডো গঞ্জালেজ

27
বিকাশকারীরা স্পষ্টভাবে পড়ার পরে পুনরায় রিফ্রেশ না করার জন্য বলে: টেলিরিক.com / forums / show-progress-spinner-during-load-refresh কারণ এটি অগ্রগতি সূচক প্রদর্শিত হতে বাধা দিতে পারে।
রুস্তম মিফতাখুদ্দিনভ

2
আমি একটি নতুন সংস্করণ ব্যবহার করছি এবং আমাকে কেবল .রেড কল করতে হবে। পড়ার পরে .refresh কল করা তথ্যের জন্য সার্ভারে দুটি ট্রিপ দেয়।
জাস্টিন

59

আমি কখনই রিফ্রেশ করি না

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

আমার জন্য একা সব সময় কাজ করে।


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

ধন্যবাদ, তবে এটি "TypeError: $ (...)। ডেটা (...) অপরিজ্ঞাত" ত্রুটি দেয়। আমি অনেক পৃষ্ঠাতেও দেখেছি এবং এই সমাধানের বিভিন্ন প্রকারের চেষ্টা করেছি তবে এখনও একই ত্রুটি পেয়েছি। কোন ধারণা?
জ্যাক

যদি ডেটা ('কেন্দোগ্রিড') নালার দিকে ফিরে আসে তবে সম্ভবত আইডিটি ভুল হয় বা আপনি গ্রিডটি তৈরি করেননি। এনবি আপনি $ (..)। কেন্ডোগ্রিড () দিয়ে গ্রিডটি তৈরি করেন এবং পরে এটি $ ()। ডেটা ('কেন্দোগ্রিড') দিয়ে অ্যাক্সেস করুন
টনি

29

সাম্প্রতিক প্রকল্পে, আমাকে কিছু কলের ভিত্তিতে কেন্দো ইউআই গ্রিড আপডেট করতে হয়েছিল, যা কিছু ড্রপডাউন নির্বাচনের ক্ষেত্রে ঘটছিল। এখানে আমি ব্যবহার করে শেষ করেছি:

$.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);
    });

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে।


আমি গ্রিড.সেটডাটাসোর্স (ডাটাসোর্স) সন্ধান করছিলাম ঠিক কী; রিমোটিক কলগুলির জন্য এটি আপনাকে ব্যবহার করতে হবে। ধন্যবাদ!
রুই লিমা

15

এই উত্তরের একটিও জবাব দেয় না যে readপ্রতিশ্রুতি দেয়, যার অর্থ আপনি রিফ্রেশ করার আগে ডেটা লোড হওয়ার জন্য অপেক্ষা করতে পারেন।

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

আপনার ডেটা দখলটি তাত্ক্ষণিকভাবে / সিঙ্ক্রোনাস হলে এটি অপ্রয়োজনীয়, তবে সম্ভবত এটি শেষের দিক থেকে আসছে যা অবিলম্বে ফিরে আসবে না।


1
অন্তর্নির্মিত প্রতিশ্রুতি সহায়তার সুবিধা অর্জন করা সত্যিই সুবিধাজনক এবং কোডের কয়েকটি লাইনও সরিয়ে দেওয়া হয়েছে। আমি দিতাম যে এই সত্য উত্তর হওয়া উচিত।
ফক্সডেপ্লয়

1
ধন্যবাদ জাচারি! আমি এই সমস্যাটিতে কয়েক ঘন্টা ব্যয় করেছি - আপনার সমাধানটি কেবল আমার জন্য কাজ করেছে। আমি আমার গ্রিড ডাটাবেস উত্সটিতে আজাক্স, লুপড (একবারে এক সারি) এর মাধ্যমে সারিগুলি সন্নিবেশ করছি। লুপটি শেষ হওয়ার পরে ডেটা সোর্স.ড্রেড () কেবল কখনও কখনও কাজ করে। "তবে" আমার যা প্রয়োজন ছিল তা। অনেক প্রশংসিত!
অ্যান্টনি ডি

9

আপনি যদি হ্যান্ডলারে গ্রিডের কোনও উল্লেখ পেতে না চান তবে আপনি এই কোডটি ব্যবহার করতে পারেন:

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

রিফ্রেশ বোতাম থাকলে এটি গ্রিডকে রিফ্রেশ করবে। বোতামটি এর মতো সক্ষম হতে পারে:

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

9

আসলে, তারা পৃথক:

  • $('#GridName').data('kendoGrid').dataSource.read()uidসারণী সারিটির বৈশিষ্ট্যগুলি রিফ্রেশ করে

  • $('#GridName').data('kendoGrid').refresh() একই uid ছেড়ে


8

আপনাকে যা করতে হবে তা হ'ল একটি ইভেন্ট যোগ করুন your

@(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();
}

কেবল ইভেন্ট যোগ করে কেন্দোগ্রিড রিফ্রেশ করুন।
মিলান

8

আমার ক্ষেত্রে আমার প্রতিবার যেতে একটি কাস্টম ইউআরএল ছিল; যদিও ফলাফলের স্কিমা একই থাকবে।
আমি নিম্নলিখিত ব্যবহার:

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);
    });


5

নিম্নলিখিত কোড ব্যবহার করে এটি স্বয়ংক্রিয়ভাবে গ্রিডের পড়ার পদ্ধতি এবং আবার গ্রিড পূরণ করুন called

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

5

গ্রিডটি পুনরায় লোড করার বিকল্প উপায় হ'ল

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

5

আপনি সর্বদা ব্যবহার করতে পারেন $('#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টাইপ হিসাবে ঘোষণা করতে ভুলবেন না


5

আমি ডেটা পেতে জ্যাকুরি .জ্যাক্স ব্যবহার করেছি। বর্তমান গ্রিডে ডেটা পুনরায় লোড করার জন্য, আমাকে নিম্নলিখিতগুলি করতে হবে:

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

4

আমি গ্রিডটি রিফ্রেশ করলে আমি পৃষ্ঠা 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();
     }
}

4

একটি সম্পূর্ণ রিফ্রেশ করার জন্য, যেখানে নতুন পড়ার অনুরোধের সাথে গ্রিডটি পুনরায় রেন্ডার করা হবে, আপনি নিম্নলিখিতটি করতে পারেন:

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

যেখানে সম্পত্তি যেকোন সম্পত্তি যেমন বাছাইযোগ্য হতে পারে


3

শুধু কোড নীচে লিখুন

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

1
এটি কেবল তখনই সত্য হবে যদি আপনি গ্রিডটি একটি পৃষ্ঠে সক্ষম.আরফ্রেশ = সত্য দিয়ে ... যা ডিফল্টরূপে নয় with যাইহোক, আপনি যখন কোনও এআইপি ফাংশন ব্যবহার করে এটি করতে সক্ষম হন তখন আপনার কোনও ইউআই workaround ব্যবহার করা উচিত নয় (স্বীকৃত উত্তর দেখুন)
The_Black_Smurf



3

আপনি যদি সময়সীমার ভিত্তিতে গ্রিডটি স্বয়ংক্রিয়ভাবে রিফ্রেশ করতে চান তবে আপনি নীচের উদাহরণটি ব্যবহার করতে পারেন যা 30 সেকেন্ডের ব্যবধানে সেট করেছে:

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

2

উইজেটগুলির ডিফল্ট / আপডেট কনফিগারেশন / ডেটা স্বয়ংক্রিয়ভাবে কোনও সম্পর্কিত ডেটা সোর্সকে আবদ্ধ করতে সেট করা হয়েছে।

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

আপনার উত্তরটি দেখতে একইরকম দেখাচ্ছে বলে গ্রহণযোগ্য উত্তরের (2013 থেকে) কিছু সমস্যা ছিল? আপনার কমপক্ষে কোনও মন্তব্য করা উচিত - এবং এই উত্তরের মন্তব্যগুলিতে এমনকি আপনার কল করা উচিত নয়refresh
জেমস জেড

2

আপনি পড়ার ক্রিয়ায় নতুন প্যারামিটার প্রেরণ এবং আপনার পছন্দ অনুযায়ী পৃষ্ঠা সেট করে আপনার গ্রিডকে রিফ্রেশ করতে পারেন:

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

এই উদাহরণে গ্রিডের পড়ার ক্রিয়াটি 2 টি প্যারামিটার মান দ্বারা কল করা হচ্ছে এবং ফলাফল পাওয়ার পরে গ্রিডের পৃষ্ঠাটি 1 পৃষ্ঠায় রয়েছে।


1

রিফ্রেশ করার সহজ উপায় হ'ল রিফ্রেশ () ফাংশনটি ব্যবহার করা। যা এর মতো হয়:

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

আপনি এই আদেশটি ব্যবহার করে ডেটা উত্সটি রিফ্রেশ করতে পারেন:

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

পরেরটি আসলে গ্রিডের ডেটা উত্সটি পুনরায় লোড করে। উভয়ের ব্যবহার আপনার প্রয়োজন এবং প্রয়োজন অনুযায়ী করা যেতে পারে।


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

এটি কমপক্ষে 1to1 অনুলিপি পেস্ট হলেও এটি কোনও অতিরিক্ত তথ্য সরবরাহ করে না। একাধিক upvote সহ এই পোস্টে প্রায় প্রতিটি উত্তর ব্যবহারের প্রস্তাব দেওয়া হয়dataSource.read()
ফ্যাবিয়ান এন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.