2013-04-15 56 views
3

我嘗試從dijit.form.filteringselect中刪除所有選項,並使用下面的函數向dijit.form.filteringselect添加一個選項。但是,我收到一個錯誤:沒有方法getOptions和addOption。我使用Dojo 1.7如何從Dijit FilteringSelect小部件中刪除所有選項?

function showTablesDropDown(tableDiv){ 
    dijit.byId(tableDiv).removeOption(dijit.byId(tableDiv).getOptions()); 
    dijit.byId(tableDiv).addOption(dojo.create("option", {label:"None", value:"None"})); 
} 

如何從dijit.form.filteringselect所有選項,並添加選項dijit.form.filteringselect?

+0

爲什麼你'dijit.byId(tableDiv)'? – g00glen00b

+0

dijit.byId(tableDiv)是篩選ID – Rachel

+0

有沒有解決方案? @DimitriM – Rachel

回答

4

這裏的問題只是對FilteringSelect(以及從_AutoCompleterMixin繼承的任何東西)與其數據交互方式的輕微誤解。無論您如何創建FilteringSelect小部件,控制其選項的基本機制都是遵循Dojo Store API的對象。

這意味着爲了修改您的FilteringSelect小部件的選項,您需要改爲與store進行交互。我已經set up this fiddle證明,但基本上你想你的功能更改爲類似:

function showTablesDropDown(tableDiv){ 
    var filteringSelectWidget = dijit.byId(tableDiv); 

    // Clear current value since options are changing. 
    filteringSelectWidget.set("value", ""); 

    var store = filteringSelectWidget.get("store"); 
    var newData = [{label: "None", value: "None"}];  

    // Give the underlying store a new data array. 
    store.setData(newData); 
} 
+0

我不想添加{label:「None」,value:「None」}來存儲。所以我試了這個。 dijit.byId(tableDiv).set(「value」,{label:「None」,value:「None」});但它不起作用 – Rachel

+0

我認爲你的例子是替換商店並添加newData來存儲。我不想替換商店,只是想在dijit.byId(tableDiv)中添加新選項不要存儲 – Rachel

+0

那麼,您的'FilteringSelect'小部件使用商店來保存所有選項。因此,您不要直接將項目添加到「FilteringSelect」,而是將項目添加到「FilteringSelect」的商店。所以你只想添加一個新的商品到商店(並保留所有原始商品)?或者你只是試圖將「FilteringSelect」的值設置爲尚不存在的選項? – Default

相關問題