2013-06-04 159 views
0

Category1有效,但類別沒有。兩者都有相同的數據。但類別是JSON響應。 類是將kendo.data.datasource json數據綁定到kendo listview

{ 
    "d": [ 
     {"__type": "MenuData+Category", "id": 1, "name": "drinks"}, 
     {"__type": "MenuData+Category", "id": 2, "name": "fruits"} 
    ] 
} 

難道我刪除d。如果是的話,我該怎麼做呢?如果不是最新錯誤?

<div id="categories" data-role="view" data-title="Categories"> 
     <header data-role="header"> 
      <div data-role="navbar"> 
       <span data-role="view-title"></span> 
      </div> 
     </header> 
     <ul id="Ul1" 
      data-role="listview" 
      data-source="category" [NOTE: Changing this datasource to category1 works] 
      data-template="categories-template" 
      data-style="inset"> 
     </ul> 
    </div> 
    <script id="categories-template" type="text/x-kendo-template"> 
     #: name # 
    </script> 

    <script> 

     var app = new kendo.mobile.Application(), 
     category = new kendo.data.DataSource({ 
      serverFiltering: true, 
      transport: { 
       read: { 
        type: "POST", 
        url: "http://localhost:60143/Mobile/Menu/MenuData.asmx/getCategory", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        error: function (xhr, ajaxOptions, thrownError) { 
         alert("error " + xhr.responseText); 
        } 
       }, 
       schema: { 
        data: "d" 
       }, 
       type: "json", 
       parameterMap: function (options) { 
        return JSON.stringify(options); 
       } 
      } 
     }), 
     category1 = new kendo.data.DataSource({ 
      data: [ 
       { id: 1,name: "Fruits" }, 
       { id: 2,name: "Drinks" }, 
      ] 
     }); 

    </script> 

回答

1

你已經把schematransport定義,而這是DataSource成員。

嘗試:

category = new kendo.data.DataSource({ 
    serverFiltering: true, 
    transport  : { 
     read: { 
      type  : "POST", 
      url  : "http://localhost:60143/Mobile/Menu/MenuData.asmx/getCategory", 
      contentType: "application/json; charset=utf-8", 
      dataType : "json", 
      error  : function (xhr, ajaxOptions, thrownError) { 
       alert("error " + xhr.responseText); 
      } 
     } 
    }, 
    schema   : { 
     data: "d" 
    }, 
    type   : "json", 
    parameterMap : function (options) { 
     return JSON.stringify(options); 
    } 
}); 
+0

你是對的。這工作。但我遇到了另一個問題。我不能在數據源上使用過濾器方法。我將這個從odata改爲json。 category.filter()在odata上工作,但不適用於json。你能告訴我爲什麼嗎? – dtksmsl

+0

GET返回500條消息:{「Message」:「嘗試使用GET請求調用方法\ u0027HelloWorld \ u0027,這是不允許的。」,「StackTrace」:「System.Web.Script.Services .RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext上下文)\ r \ n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,WebServiceMethodData methodData)「,」ExceptionType「:」System.InvalidOperationException「} – dtksmsl

+0

只需讓您知道我使用的是不同的網址,因此方法名稱與此不同。當我使用category.filter({field:「id」,operator:「eq」,value:1})時,我得到一個錯誤響應:{「Message」:「無效的JSON原語:skip。」,「StackTrace」: 「在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度)\ r \ n在System.Web.Script.Serialization.JavaScriptObjectDeserializer。 BasicDeserialize ...... – dtksmsl