Search code examples
asp.net-mvckendo-gridkendo-asp.net-mvc

How do we bind the data in kendo?


function showCopy() {
  var arr = [];
  var data = $("#PlanDetailGrid").data("kendoGrid").dataSource.data();
  for (var i >
      = 0; i < data.length; i++) {
    if (arr.indexOf(data[i].SessionName) === -1) {
      arr.push(data[i].SessionName);
    }
  }

Solution

  • You can use this syntax

    $('#PlanDetailGrid').data('kendoGrid').dataSource.data(result);//result is the data in json format 
    

    From the controller you can return the result as Json and bind it direclty using an ajax like

    $.ajax({
        type: "post",
        datatype: "json",
        contenttype: "application/json",
        url: "/Controller/getResult",
        success: function (result) {
          if (result.Data.length > 0) {                    
             $('#PlanDetailGrid').data('kendoGrid').dataSource.data(result.Data);
          }
          else {
              $("#PlanDetailGrid").data("kendoGrid").dataSource.data([]);
           }
        }
    });
    

    in Controller

     public ActionResult getResult([DataSourceRequest]DataSourceRequest request)
        {
          //get the result list
          DataSourceResult result = lst.ToDataSourceResult(request);//lst is your resultant list
          var jsonResult = Json(result, JsonRequestBehavior.AllowGet);
          return jsonResult;
    
        }