Please don't mark it as duplicate as there are other questions on SO with similar problem as well and I have gone though them.
I am trying to load Kendo grid on button click but it doesn't seem to be working for me. I am attaching my files below:
KendoData.cshtml
<div id="grid">
@(Html.Kendo().Grid(<MvcApplication1.Models.Customer)
.Name("AjaxGrid")
.AutoBind(false)
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("KendoDataAjaxHandle", "Default1Controller"))
)
.Columns(columns =>
{
//Create a column bound to the ProductID property.
columns.Bound(customer => customer.CustomerAltID);
//Create a column bound to the ProductName property.
columns.Bound(customer => customer.CustomerName);
//Create a column bound to the UnitsInStock property.
columns.Bound(customer => customer.Gender);
})
.Pageable() //Enable the paging.
.Sortable() //Enable the sorting.
.Groupable()
)
</div>
<style>
#AjaxGrid {
display: none;
}
</style>
<button class="btn btn-warning grid" type="button">Load Ajax KendoData</button>
jQuery
$('button.grid').click(function () {
$("#AjaxGrid").data("kendoGrid").dataSource.read();
$("#AjaxGrid").css("display", "block");
});
Controller
public class Default1Controller : Controller
{
//
// GET: /Default1/
private Sales_DW db= new Sales_DW();
public ActionResult KendoData()
{
return View();
}
public ActionResult KendoDataAjaxHandle([DataSourceRequest]DataSourceRequest request)
{
IQueryable<Customer> products = db.Customers;
DataSourceResult result = products.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
}
on the click of the button, I am getting Cannot read property dataSource of undefined
error on console.
Can someone please tell me as what I have done wrong here. Thanks in advance.