2014-02-26 59 views
3

有什麼辦法可以防止默認的ajax請求?我將在java腳本中完成所有配置後再刷新網格,然後我開始請求,但不知何故,這個kendo網格在加載頁面時會自動請求數據。Kendo Grid防止默認請求

@(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)) 
) 
+1

嘗試將['autoBind'](http://docs.telerik.com/kendo-ui/api/web/grid#configuration-autoBind)設置爲'false' – OnaBai

+0

@OnaBai嗯,我也看到了enableCustomBinding你知道嗎有什麼不同 ? – kosnkov

回答

4

就像一個快速介紹,爲什麼這發生:當劍道UI網格不必依賴於它的任何數據,但確實有一個讀傳送配置選項設置,它會觸發一個請求抓取數據。當您使用Ajax綁定和頁面大小的項目的子集時,排序,分頁,過濾,分組等等也是如此。

無論如何,至於解決方案,有幾種方法可以設置它。

也許最簡單的方法就是利用Grid的DataSource的requestStart event並取消任何不符合您的標準的數據請求。

您也可以使用您的帖子評論中提到的autoBind configuration option

或者,您可以在JavaScript之外的網格中定義一個DataSource,然後等待您的所需方案發生後將其分配給網格。網格的DataSource屬性可以通過一些簡單的JS訪問和分配,並且網格只有在正確指定了DataSource之後纔會啓動請求。

總的來說,我建議保留Kendo UI documentation就在這種情況下,因爲它會給你所有的網格和數據源的事件和配置選項。主要是JS方面的事情,但是你很可能需要使用JS來處理這種特定的場景。