2015-05-12 71 views
2

我想添加一個項目到kendoDropDownList,它似乎添加了選項,但沒有設置值和文本。檢查選擇它只是增加了一個新的選擇添加項目kendoDropDownList

<option></option> 

這裏是我使用

$("#nameList").data("kendoDropDownList") 
    .dataSource.add({ "text": "Joe", "value": "Joe" }); 

UPDATE

這是我的數據源模型和requestEnd的建議,但價值觀似乎得到搞砸了

datasource_people = new kendo.data.DataSource({ 
     type: "json", 
     serverFiltering: true, 
     transport: { 
      read: { 
       dataType: 'json', 
       type: 'GET', 
       url: '/restful/people/' 
      } 
     }, 
     filter: { 
      field: "status", 
      operator: "eq", 
      value: 1 
     }, 
     schema: { 
      data: function(response) { 
       return response.data.plaintiffs; 
      }, 
      model: { 
       id: "person_id", 
       fields: { 
        person_id: {type: "number"}, 
        name: { type: "string"} 
       } 
      }, 
      errors: "error", 
      total: function(response) { 
       return response.data.total; 
      } 
     } 
    }); 

Then Then Later

$("#people_list").kendoDropDownList({ 
        dataTextField: "text", 
        dataValueField: "value", 
        dataSource: { 
         datasource_people, 
         requestEnd: function (e) { 
          e.response.push({text: "John", value: "John"}); 
         } 
        } 
       }); 

回答

5

經過一番搜索後,它非常簡單,但這正是我所需要的。

$("#people_list").getKendoDropDownList().dataSource.insert({ 
    person_id: "John", 
    name: "John" 
}) 
+0

其工作就像魅力!謝謝Hector。 – vel

3

使用requestEnd加載後,您可以將新項目添加到數據源中。

requestEnd: function (e) { 
    e.response.push({text: "Joe", value: "Joe"}); 
} 

我已經更新了其他用戶的小提琴,以顯示它的工作原理。 jsFiddle example

+1

這似乎工作,是更長的行我需要,但由於某些原因,所有的值和文本顯示爲'未定義'只有當選擇。奇怪。 – Hector

+0

因爲它可以解決您的問題,因此將其投票或標記爲已回答會很好。您可以使用'未定義'問題發佈另一個問題。 –

+0

順便說一句,你的dataTextField和dataValueField字段是錯誤的。 –

0

使用此:

<input id="nameList" value="1" /> 
var data = [ 
    { text: "Joe", value: "Joe" }, 
    { text: "Joe", value: "Joe" }, 
    { text: "Joe", value: "Joe" } 
]; 

// create DropDownList from input HTML element 
$("#nameList").kendoDropDownList({ 
    dataTextField: "text", 
    dataValueField: "value", 
    dataSource: data, 
    index: 0,   
}); 

DEMO

+0

謝謝,但我應該提到我已經有選項加載到列表中。此方法將清除我所有的當前選項,而不是附加到列表中。 – Hector

+0

我怎樣才能將我的原始數據源與新數據一起調用?交通:{ 閱讀:{ 數據類型: 'JSON', 類型: 'GET', 網址:'/寧靜/公司的 } } – Hector

+0

您可以在數據推送新的數據,而之後再次運行這樣的腳本 –

0

不知道你想要什麼,但你可以從一個數據源加載選項,然後追加更多的列表dataBound已經解僱了。

$("#nameList").kendoDropDownList({ 
    dataTextField: "text", 
    dataValueField: "value", 
    dataSource: { 
     transport: { 
      read: { 
       dataType: 'json', 
       type: 'GET', 
       url: '/restful/companies' 
      } 
     } 
    }, 
    dataBound:onDataBound 
}); 

<script> 
    function onDataBound(e) { 
     e.sender.dataSource.add({ "text": "Joe", "value": "Joe" }); 
    } 
</script> 
+0

我們使用數據屬性來初始化下拉菜單。我無法找到一個數據 - 屬性數據綁定爲我 – Hector

+0

也試過,但似乎並沒有任何工作信息: 功能onDataBound(E){ \t \t \t \t \t e.sender.dataSource。add({text:「John」,value:「John」}); \t \t \t \t} \t \t \t \t \t \t \t \t變種下拉列表= $( 「#名稱列表」)的數據( 「kendoDropDownList」); \t \t \t \t dropdownlist.bind(「dataBound」,onDataBound); – Hector