2012-09-06 155 views
3

所以我跟着Kendo Provides使用外部數據源的例子,出於某種原因,當你把一個URL的Default.aspx/GetEvents(其中GetEvents是一個Default.aspx中的webmethod)它返回Default.aspx的整個HTML,而不是在普通的AJAX調用中調用webmethod。kendo UI grid datasource asp webforms

所以,我發現周圍的一種方法,我用的是本地數據源方法,它調用javascript函數 - 這javascript函數做自己的Ajax調用我的webmethod Default.aspx中,並得到了全成響應

所以這裏是我的代碼

$(document).ready(function() { 
       $("#grid").kendoGrid({ 
        dataSource: { 
         data: createRandomData(), 
         schema: { 
          data: "d" 
         }, 
         pageSize: 10 
        }, 
        height: 250, 
        scrollable: true, 
        sortable: true, 
        filterable: true, 
        pageable: { 
         input: true, 
         numeric: false 
        }, 
        columns: [ 
         { 
          field: "Title", 
          title: "Title", 
          width: 100 
         }, 
         { 
          field: "StartDate", 
          title: "StartDate", 
          width: 100 
         }, 
         { 
          field: "Keywords", 
          width: 100 
         } 
        ] 
       }); 
      }); 

這裏是createRandomData()被返回的開頭 - 這是有效的JSON - 我只是不想貼這一切,使這個問題不可讀

"d" : [ 
{ 
    "Title": "Chicago BlackHawks vs. Detroit Redwings", 
    "StartDate": "9/7/2012 12:00:00 AM", 
    "Keywords": "-- Select --" 
}, 
{ 
    "Title": "", 
    "StartDate": "1/1/1900 12:00:00 AM", 
    "Keywords": "-- Select --" 
}, ....... 

我看不出有任何理由,這將無法正常工作,現在電網只是說:「載入中...」,並保持這樣永遠沒有控制檯錯誤

    function createRandomData() { 
        $.ajax({ 
         type: "POST", 
         url: "MyEvents.aspx/GetEvents", 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function (msg) {         
          var rs = msg; 
          return rs; 
         } 
        }); 
        return false; 
       } 

回答

5

的可能的問題是KendoUI預期當使用data元素時,可以使用簡單的javascript調用(無AJAX)。當您調用JS方法時,它立即返回,但AJAX調用需要更長的時間才能完成,但Kendo網格在調用完成時不會收到通知。

您可以嘗試的是使用數據源here上的transport.read對象。這樣,網格應該可以在AJAX調用中正常工作。

編輯: 您是否嘗試過這樣的事情:

dataSource: { 
    transport: { 
     read: function(options) { 
      $.ajax({ 
       type: "POST", 
       url: "MyEvents.aspx/GetEvents", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) {         
        options.success(msg.d); 
       } 
      }); 
     } 
    } 
} 
+0

我它就是這樣,t他的問題是當我使用url:「..」並連接到一個webmethod時,它不會調用我的webmethod - 它返回整個aspx頁面,就像kendo網格不知道如何進行ajax調用 - 它所做的一切請求aspx頁面 - 奇怪,從未見過類似的東西 –

+0

你可以發佈你的'createRandomData'代碼嗎? –

+0

我可以,但我肯定它返回的樣本我提供了 –

0

可能改變你的架構確定指標:

從這個

schema: { 
data: "d" 
} 

這個

schema: { 
model: { 
    fields: { 
    Title: { type: "string" }, 
    StartDate: { type: "string" }, 
    Keywords: { type: "string" } 
    } 
} 
}