extjs 列表框(multiselect)的動(dòng)態(tài)添加列表項(xiàng)的方法
更新時(shí)間:2009年07月31日 15:01:47 作者:
最近公司一個(gè)項(xiàng)目,因?yàn)橐褂胐iv模擬的窗口,因?yàn)榫寐別xtjs的大名,因此就想在項(xiàng)目中使用一下.首先下載了multiselect的extjs3.0 demo.看到的代碼這里我就不粘貼了.
因?yàn)樗@個(gè)是創(chuàng)建時(shí)自動(dòng)加載的ArrayStore(關(guān)鍵字是:data: ds),沒(méi)有動(dòng)態(tài)增加的示例,但我們的項(xiàng)目需要有三個(gè)列表框,并且后兩個(gè)的內(nèi)容要根據(jù)第一個(gè)列表框內(nèi)容動(dòng)態(tài)的加載,因此要在選擇第一個(gè)列表框的內(nèi)容時(shí),動(dòng)態(tài)填充后兩個(gè)的內(nèi)容.我比較佩服exjts的示例寫(xiě)作人員,這些應(yīng)該在示例中體現(xiàn)的功能,他們都沒(méi)有寫(xiě)到,包括之前的2.2版本的示例,網(wǎng)上也沒(méi)有搜索到,害我找了一天如何動(dòng)態(tài)控制列表數(shù)據(jù)的功能.首先說(shuō)明一下,我的方法也不是官方的方法,只是自己靈機(jī)一動(dòng)想到的,下面是動(dòng)態(tài)增加列表項(xiàng)的方法.
在方法之前我的關(guān)于multiselect對(duì)象的store是這樣定義的:
flowDs = new Ext.data.ArrayStore({
data: [[123,123]],
fields: ['value','text']
});
(1)var toflowStore = msForm.getForm().findField('toflow').store; //根據(jù)名稱得到multiselect對(duì)象的store對(duì)象;
(2)創(chuàng)建一個(gè)Ext.data.Record對(duì)象,這正在我想了好久的增加方法,也怪自己太笨了:
var record = new Object();
record.value = "2";
record.text = "3";
var records = new Ext.data.Record(record);
(3) 將創(chuàng)建的Ext.data.Record對(duì)象加至multiselect的store對(duì)象中:
toflowStore.add(record1);
通過(guò)以上三步就可以為列表multisleect動(dòng)態(tài)增加列表項(xiàng)了,提醒一下刪除某項(xiàng)可以通過(guò)remove()/removeAll()方法,具體的使用方法可以通過(guò)示例代碼的ItemSelector.js中查到.
通過(guò)以上分析后,大致可以簡(jiǎn)單估計(jì)到multiselect的創(chuàng)建規(guī)則,在store中有一個(gè)屬性fields: ['value','text'],則在創(chuàng)建時(shí),系統(tǒng)會(huì)通過(guò)循環(huán)的方式將屬性data:[[123,123]]中的內(nèi)容創(chuàng)建為object對(duì)象,然后寫(xiě)到時(shí)它的store對(duì)象中,類(lèi)似下面的代碼:
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);
}
以上只是我腓臆的猜測(cè),具體extjs的工程師是不是如此設(shè)計(jì)他們的程序,還沒(méi)有仔細(xì)研究.
在方法之前我的關(guān)于multiselect對(duì)象的store是這樣定義的:
復(fù)制代碼 代碼如下:
flowDs = new Ext.data.ArrayStore({
data: [[123,123]],
fields: ['value','text']
});
(1)var toflowStore = msForm.getForm().findField('toflow').store; //根據(jù)名稱得到multiselect對(duì)象的store對(duì)象;
(2)創(chuàng)建一個(gè)Ext.data.Record對(duì)象,這正在我想了好久的增加方法,也怪自己太笨了:
復(fù)制代碼 代碼如下:
var record = new Object();
record.value = "2";
record.text = "3";
var records = new Ext.data.Record(record);
(3) 將創(chuàng)建的Ext.data.Record對(duì)象加至multiselect的store對(duì)象中:
toflowStore.add(record1);
通過(guò)以上三步就可以為列表multisleect動(dòng)態(tài)增加列表項(xiàng)了,提醒一下刪除某項(xiàng)可以通過(guò)remove()/removeAll()方法,具體的使用方法可以通過(guò)示例代碼的ItemSelector.js中查到.
通過(guò)以上分析后,大致可以簡(jiǎn)單估計(jì)到multiselect的創(chuàng)建規(guī)則,在store中有一個(gè)屬性fields: ['value','text'],則在創(chuàng)建時(shí),系統(tǒng)會(huì)通過(guò)循環(huán)的方式將屬性data:[[123,123]]中的內(nèi)容創(chuàng)建為object對(duì)象,然后寫(xiě)到時(shí)它的store對(duì)象中,類(lèi)似下面的代碼:
復(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);
}
以上只是我腓臆的猜測(cè),具體extjs的工程師是不是如此設(shè)計(jì)他們的程序,還沒(méi)有仔細(xì)研究.
您可能感興趣的文章:
- vue.js給動(dòng)態(tài)綁定的radio列表做批量編輯的方法
- JS動(dòng)態(tài)的把左邊列表添加到右邊的實(shí)現(xiàn)代碼(可上下移動(dòng))
- Vue.js Ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法
- JavaScript實(shí)現(xiàn)動(dòng)態(tài)刪除列表框值的方法
- javascript實(shí)現(xiàn)dom動(dòng)態(tài)創(chuàng)建省市縱向列表菜單的方法
- JavaScript實(shí)現(xiàn)向OL列表內(nèi)動(dòng)態(tài)添加LI元素的方法
- javascript為下拉列表動(dòng)態(tài)添加數(shù)據(jù)項(xiàng)
- JS 動(dòng)態(tài)添加列表框項(xiàng)效果代碼
- JS如何生成動(dòng)態(tài)列表
相關(guān)文章
ExtJS 2.0實(shí)用簡(jiǎn)明教程 之Ext類(lèi)庫(kù)簡(jiǎn)介
ExtJS由一系列的類(lèi)庫(kù)組成,一旦頁(yè)面成功加載了ExtJS庫(kù)后,我們就可以在頁(yè)面中通過(guò)javascript調(diào)用ExtJS的類(lèi)及控件來(lái)實(shí)現(xiàn)需要的功能。2009-04-04ExtJS 設(shè)置級(jí)聯(lián)菜單的默認(rèn)值
ExtJS在修改這樣的頁(yè)面上賦值是很方便的,在正文中1.2.1代碼中可以看出,一行代碼就可以搞定,但這是對(duì)于普通控件而言,如文本框。對(duì)于ComboBox可沒(méi)這么簡(jiǎn)單...2010-06-06Extjs TimeField 顯示正常時(shí)間格式的代碼
由后臺(tái)返回的json的日期時(shí)間格式中,往往都是 類(lèi)似 "\/Date(1309200300000)\/"的日期時(shí)間格式,結(jié)果導(dǎo)致無(wú)法正常在TimeField中顯示2011-06-06Extjs學(xué)習(xí)筆記之五 一個(gè)小細(xì)節(jié)renderTo和applyTo的區(qū)別
Extjs的組件有兩個(gè)看起來(lái)類(lèi)似的配置項(xiàng),applyTo和renderTo,這兩個(gè)配置項(xiàng)都是用來(lái)指定將該extjs組件加載到什么位置。那他們到底有什么區(qū)別呢,網(wǎng)上搜了下,有兩篇博文也是關(guān)于這個(gè)的。2010-01-01ExtJS 刷新后如何默認(rèn)選中刷新前最后一次選中的節(jié)點(diǎn)
這篇文章主要介紹了ExtJS 刷新后如何默認(rèn)選中刷新前最后一次選中的節(jié)點(diǎn),需要的朋友可以參考下2014-04-04ExtJS下書(shū)寫(xiě)動(dòng)態(tài)生成的xml(兼容火狐)
ExtJS下書(shū)寫(xiě)動(dòng)態(tài)生成的xml,只能有IE可以運(yùn)行,為了兼容性,必須考慮火狐的用戶,所以,這個(gè)程序?yàn)榱耍夯鸷脩舻募嫒菪?/div> 2013-04-04Extjs NumberField后面加單位實(shí)現(xiàn)思路
本文為大家介紹下在NumberField后面加單位,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下2013-07-07最新評(píng)論