2016-12-30 58 views
0

我需要將大量數據填充到劍道下拉列表中(可能會達到數百萬)。所以我試圖用kendo的serverFiltering來實現這一點。我檢查了他們在github上的官方api,他們使用參數skiptake,它似乎對他們工作正常。我想通過下面的代碼來發送跳躍,並採取如何在劍道下拉列表中指定跳過並取值

$("#parentProductId").kendoDropDownList({ 
     filter: "startswith", 
     dataTextField: "ProductName", 
     dataValueField: "id", 
     optionLabel: ' --Select--', 
     dataSource: { 
      serverFiltering: true, 
      data: { 
       skip:0 , 
       take: 10 
      }, 
      transport: { 
       read: { 
        url: webApiUri + '/Product/ProductSel', 
        beforeSend: function (xhr) { 
         xhr.setRequestHeader("Authorization", "Bearer " + accessToken); 
        } 
       } 
      } 
     } 
    }); 

我Apicontroller如下: -

[Route("api/Product/ProductSel")] 
public List<SpProductSel_Result> ProductGet(int skip, int take) 
    { 

     //return result 
    } 

現在我的問題是這樣的API控制器不會被調用。我在這裏做錯了什麼?

+0

什麼是webApiUri價值? –

+0

它指向正確的路徑。如果我刪除了int skip和int take並且不發送任何來自「data:」的部分,它完美地工作 –

+0

對不起,這是假期,我還沒有機會嘗試你的答案,我確實upvote它 –

回答

1

其中一種可能性可能是您需要使用正確的transport.read配置。當使用Tranport配置我們指定的數據作爲讀出的一部分請參閱代碼段below.Refer到劍道文檔transport.read.data

實施例#1 SEND附加參數作爲對象

transport: { 
read: { 
    url: "http://demos.telerik.com/kendo-ui/service/twitter/search", 
    dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests 
    data: { 
    q: "html5" // send "html5" as the "q" parameter , like int skip and take 
    } 
} 

實施例#2 - 發送其他參數通過返回THEM 從函數

transport: { 
    read: { 
     url: "http://demos.telerik.com/kendo-ui/service/twitter/search", 
     dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests 
     data: function() { 
     return { 
      skip: 0,  // send 0 as the "skip" parameter 
      take:10  // send 10 as the "take" parameter 
     }; 
     } 
    } 
    }