2016-09-28 69 views
0

我有一個kendo網格,該列中有一個自定義過濾器模板,它是一個下拉列表。我無法將數據填充到下拉列表中。將數據綁定到kendo下拉列表中

我想要的是讓選項是該列中所有記錄的所有唯一值。

側面問題:有沒有更簡單的方法來填充列的唯一值的下拉列表?由於這是放置在下拉列表中最合乎邏輯的內容,我希望可能會有一些內置的方式?

我想要做的是讓它調用一個返回JSON指定選項的服務。

下面我有3種方法,我試着編寫基於谷歌搜索的數據列字段,導致在這個論壇上很老的話題,這就是爲什麼我希望有一個簡單的方法。前兩個不起作用,但第三個(硬編碼)工作。

1)此調用命中服務器並返回JSON,但不會填充下拉列表。

{ 
      "field": "location_name", 
      "title": "Location", 
      "filterable": { 
       cell: { 
        template: function (args) { 
         args.element.kendoDropDownList({ 
         dataTextField: "optionText", 
         dataValueField: "optionValue", 
         valuePrimitive: true, 
         dataSource: { 
          transport: { 
           read: 
            function(options) { 
             $.ajax({ 
              type: "GET", 
              url: "/Patrol/Report.aspx/GetOptions", 
              data: "d", 
              contentType: "application/json; charset=utf-8", 
              dataType: "json", 
              success: function (msg) { 
               alert(msg.d); 
               return msg; //tried with and without the return 
              } 
             }); 
            } 
          } 
         } 
        }); 
       }, 
       showOperators: false 
      } 
     } 

2)該調用完全不

 { 
      "field": "location_name", 
      "title": "Location", 
      "filterable": { 
       cell: { 
        template: function (args) { 
         args.element.kendoDropDownList({ 
         dataTextField: "optionText", 
         dataValueField: "optionValue", 
         valuePrimitive: true, 
         dataSource: { 
          transport: { 
           read: { 
            dataType: "jsonp", 
            url: "/Patrol/Report.aspx/GetOptions", 
           } 
          } 
         } 
        }); 
       }, 
       showOperators: false 
      } 
     } 

3)硬打服務器編碼數據源的數據:這正常工作

{ 
     "field": "location_name", 
     "title": "Location", 
     "filterable": { 
      cell: { 
       template: function (args) { 
        args.element.kendoDropDownList({ 
        dataTextField: "optionText", 
        dataValueField: "optionValue", 
        valuePrimitive: true, 
        dataSource: 
         [{"optionText": "HP","optionValue": "HP"}, {"optionText": "Loc2","optionValue": "ID2"}] 
       }); 
      }, 
      showOperators: false 
     } 
    } 
+0

由於您需要在'$ .ajax()''success'回調中調用'options.success(...您的數據...)',場景1不起作用。 ://docs.telerik.com/kendo-ui/framework/datasource/crud#read-local – dimodi

+0

@dimodi好的,我會嘗試,我不知道如何將數據傳回到下拉菜單 –

+1

@dimodi這是解決我的問題。如果您將其作爲答案發布,我會接受它 –

回答