Kendo Grid阻止默认请求

kos*_*kov 4 kendo-ui kendo-grid kendo-asp.net-mvc

有没有办法防止默认的ajax请求?我将在java脚本中进行所有配置之后刷新网格,然后我开始请求,但不知何故,这个kendo网格是在加载页面时自动请求数据.

@(Html.Kendo().Grid<Data>()
    .Name("grid")
    .HtmlAttributes(new { Class = "acceleratorGrid" })
    .TableHtmlAttributes(new { Class = "styled", cellpadding = "0", border = "0", margin = "0" })
    .Events(e => e.Change("onChange"))
    .DataSource(dataSource => dataSource // Configure the grid data source
                                .Ajax() // Specify that ajax binding is used
                                .Read(read => read.Action("Products_Read", "Home")) // Set the action method which will return the data in JSON format
    )
    .Columns(columns =>
                {

                    columns.Bound(product => product.ProductID).Template(@<text></text>).ClientTemplate("<input type='checkbox' onclick='return false' name='checkedRecords' />");
                    columns.Bound(product => product.ProductName);
                    columns.Bound(product => product.UnitsInStock);
                }
    ).Selectable(s => s.Mode(GridSelectionMode.Single))
)
Run Code Online (Sandbox Code Playgroud)

小智 5

就像为什么会发生这种情况一样快速介绍:当Kendo UI Grid没有任何数据绑定它,但确实设置了读传输配置选项时,它将触发获取数据的请求.当您使用Ajax绑定和页面大小的项目子集时,排序,分页,过滤,分组等也是如此.

无论如何,对于解决方案,有几种方法可以设置它.

也许最简单的方法就是利用Grid的DataSource 的requestStart事件,并取消任何不符合您标准的数据请求.

您还可以使用发布评论中提到的autoBind配置选项.

或者,您可以在JavaScript中定义Grid外部的DataSource,然后等待所需方案发生后将其分配给Grid.可以通过一些简单的JS访问和分配Grid的DataSource属性,并且在正确分配DataSource之前,Grid不会启动请求.

总的来说,我建议将Kendo UI文档保存在这个场景中,因为它将为您提供Grid和DataSource的所有事件和配置选项.主要用于JS方面,但您很可能需要在这种特定方案中使用JS.