extjs 列表框(multiselect)的動態(tài)添加列表項的方法
更新時間:2009年07月31日 15:01:47 作者:
最近公司一個項目,因為要使用div模擬的窗口,因為久聞extjs的大名,因此就想在項目中使用一下.首先下載了multiselect的extjs3.0 demo.看到的代碼這里我就不粘貼了.
因為它這個是創(chuàng)建時自動加載的ArrayStore(關(guān)鍵字是:data: ds),沒有動態(tài)增加的示例,但我們的項目需要有三個列表框,并且后兩個的內(nèi)容要根據(jù)第一個列表框內(nèi)容動態(tài)的加載,因此要在選擇第一個列表框的內(nèi)容時,動態(tài)填充后兩個的內(nèi)容.我比較佩服exjts的示例寫作人員,這些應(yīng)該在示例中體現(xiàn)的功能,他們都沒有寫到,包括之前的2.2版本的示例,網(wǎng)上也沒有搜索到,害我找了一天如何動態(tài)控制列表數(shù)據(jù)的功能.首先說明一下,我的方法也不是官方的方法,只是自己靈機(jī)一動想到的,下面是動態(tài)增加列表項的方法.
在方法之前我的關(guān)于multiselect對象的store是這樣定義的:
flowDs = new Ext.data.ArrayStore({
data: [[123,123]],
fields: ['value','text']
});
(1)var toflowStore = msForm.getForm().findField('toflow').store; //根據(jù)名稱得到multiselect對象的store對象;
(2)創(chuàng)建一個Ext.data.Record對象,這正在我想了好久的增加方法,也怪自己太笨了:
var record = new Object();
record.value = "2";
record.text = "3";
var records = new Ext.data.Record(record);
(3) 將創(chuàng)建的Ext.data.Record對象加至multiselect的store對象中:
toflowStore.add(record1);
通過以上三步就可以為列表multisleect動態(tài)增加列表項了,提醒一下刪除某項可以通過remove()/removeAll()方法,具體的使用方法可以通過示例代碼的ItemSelector.js中查到.
通過以上分析后,大致可以簡單估計到multiselect的創(chuàng)建規(guī)則,在store中有一個屬性fields: ['value','text'],則在創(chuàng)建時,系統(tǒng)會通過循環(huán)的方式將屬性data:[[123,123]]中的內(nèi)容創(chuàng)建為object對象,然后寫到時它的store對象中,類似下面的代碼:
var item = [],itemObj,record;
for(var i = 0; i< this.data.length;i++){
item = this.data[i];
itemObj = new Object();
itemObj.value = item[0];
itemObj.text = item[1];
record = new Ext.data.Record(itemObj);
this.store.add(record);
}
以上只是我腓臆的猜測,具體extjs的工程師是不是如此設(shè)計他們的程序,還沒有仔細(xì)研究.
在方法之前我的關(guān)于multiselect對象的store是這樣定義的:
復(fù)制代碼 代碼如下:
flowDs = new Ext.data.ArrayStore({
data: [[123,123]],
fields: ['value','text']
});
(1)var toflowStore = msForm.getForm().findField('toflow').store; //根據(jù)名稱得到multiselect對象的store對象;
(2)創(chuàng)建一個Ext.data.Record對象,這正在我想了好久的增加方法,也怪自己太笨了:
復(fù)制代碼 代碼如下:
var record = new Object();
record.value = "2";
record.text = "3";
var records = new Ext.data.Record(record);
(3) 將創(chuàng)建的Ext.data.Record對象加至multiselect的store對象中:
toflowStore.add(record1);
通過以上三步就可以為列表multisleect動態(tài)增加列表項了,提醒一下刪除某項可以通過remove()/removeAll()方法,具體的使用方法可以通過示例代碼的ItemSelector.js中查到.
通過以上分析后,大致可以簡單估計到multiselect的創(chuàng)建規(guī)則,在store中有一個屬性fields: ['value','text'],則在創(chuàng)建時,系統(tǒng)會通過循環(huán)的方式將屬性data:[[123,123]]中的內(nèi)容創(chuàng)建為object對象,然后寫到時它的store對象中,類似下面的代碼:
復(fù)制代碼 代碼如下:
var item = [],itemObj,record;
for(var i = 0; i< this.data.length;i++){
item = this.data[i];
itemObj = new Object();
itemObj.value = item[0];
itemObj.text = item[1];
record = new Ext.data.Record(itemObj);
this.store.add(record);
}
以上只是我腓臆的猜測,具體extjs的工程師是不是如此設(shè)計他們的程序,還沒有仔細(xì)研究.
您可能感興趣的文章:
- vue.js給動態(tài)綁定的radio列表做批量編輯的方法
- JS動態(tài)的把左邊列表添加到右邊的實(shí)現(xiàn)代碼(可上下移動)
- Vue.js Ajax動態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法
- JavaScript實(shí)現(xiàn)動態(tài)刪除列表框值的方法
- javascript實(shí)現(xiàn)dom動態(tài)創(chuàng)建省市縱向列表菜單的方法
- JavaScript實(shí)現(xiàn)向OL列表內(nèi)動態(tài)添加LI元素的方法
- javascript為下拉列表動態(tài)添加數(shù)據(jù)項
- JS 動態(tài)添加列表框項效果代碼
- JS如何生成動態(tài)列表
相關(guān)文章
Extjs學(xué)習(xí)筆記之九 數(shù)據(jù)模型(上)
本文開始進(jìn)入Extjs最核心最優(yōu)秀的部分。2010-01-01
ext combox 下拉框不出現(xiàn)自動提示,自動選中的解決方法
ext combox 如果想實(shí)現(xiàn)類似于 baidu 搜索時的提示功能。必須禁止其分頁功能才可以。2010-02-02
Extjs中ComboBoxTree實(shí)現(xiàn)的下拉框樹效果(自寫)
最近涉及到的一個項目中,需要實(shí)現(xiàn)ComboBoxTree的效果,由于在Extjs中是沒有這種效果,所以看看別人的資料自己寫了一個,感興趣的朋友可以參考下哈2013-05-05
ExtJS如何設(shè)置與獲取radio控件的選取狀態(tài)
radio控件的選取狀態(tài)如何設(shè)置與獲取,下面使用ExtJS來簡單實(shí)現(xiàn)下,感興趣的朋友可以參考下2014-01-01
extjs tabpanel限制選項卡數(shù)量實(shí)現(xiàn)思路及代碼
使用的是用變量存儲 id 加載新的選卡時 交換 id ,從而限制了打開的選項卡數(shù)量,如果不是一定要這個效果,建議不要頻繁的關(guān)閉和創(chuàng)建tabpanel,感興趣的朋友可以參考下哈2013-04-04
學(xué)習(xí)ExtJS(一) 之基礎(chǔ)前提
學(xué)習(xí)ExtJS前提條件,大家要想學(xué)習(xí),需要一些基礎(chǔ)知識。2009-10-10

