Search code examples
kendo-uitelerikkendo-gridkendo-asp.net-mvctelerik-grid

How to prevent ajax request from going on server side on page size change when no records are available?


I am using Kendo ui grid:http://demos.telerik.com/kendo-ui/grid/index

I want to stop my ajax request from going on server side on page size change when "No records are available":

From Jayesh Goyani answer i have prevent sorting when "no records are available" like this:

$("#grid .k-grid-header .k-link").click(function (e) { 
                if ($("#grid").data("kendoGrid").dataSource.data().length == 0) {
                    e.stopPropagation();
                }
            });

So how to do the same things on page size change?

Note:I am using Script for kendo ui.


Solution

  • Please try with the below code snippet. As per my knowledge its very difficult to prevent ajax request so when no record exists in grid then i have disable the pagesize dropdownlist.

    <!DOCTYPE html>
    <html>
    <head>
        <title>Jayesh Goyani</title>
        <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2015.2.902/styles/kendo.common-material.min.css" />
        <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2015.2.902/styles/kendo.material.min.css" />
    
        <script src="https://kendo.cdn.telerik.com/2015.2.902/js/jquery.min.js"></script>
        <script src="https://kendo.cdn.telerik.com/2015.2.902/js/kendo.all.min.js"></script>
    </head>
    <body>
        <div id="grid"></div>
        <script src="http://demos.telerik.com/kendo-ui/content/shared/js/products.js"></script>
        <script>
            $(document).ready(function () {
                products = null;
                $("#grid").kendoGrid({
                    dataSource: {
                        data: products,
                        schema: {
                            model: {
                                fields: {
                                    ProductName: { type: "string" },
                                    UnitPrice: { type: "number" },
                                    UnitsInStock: { type: "number" },
                                    Discontinued: { type: "boolean" }
                                }
                            }
                        }
                    },
                    height: 550,
                    groupable: true,
                    sortable: true,
                    dataBound: onDataBound,
                    pageable: {
                        refresh: true,
                        pageSizes: true
                    },
                    columns: [
                                "ProductName",
                                { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "130px" },
                                { field: "UnitsInStock", title: "Units In Stock", width: "130px" },
                                { field: "Discontinued", width: "130px" }
                    ]
                });
                $("#grid .k-grid-header .k-link").click(function (e) {
                    if ($("#grid").data("kendoGrid").dataSource.data().length == 0) {
                        e.stopPropagation();
                    }
                });
    
            });
            function onDataBound(arg) {
                if ($("#grid").data("kendoGrid").dataSource.data().length == 0) {
                    $(".k-grid-pager .k-dropdown").find('select').data("kendoDropDownList").readonly();
                }
                else {
                    $(".k-grid-pager .k-dropdown").find('select').data("kendoDropDownList").readonly(false);
                }
            }
        </script>
    </body>
    </html>
    

    Let me know if any concern.