作家
登录

extjs 列表框(multiselect)的动态添加列表项的方法

作者: 来源:www.28hudong.com 2013-03-30 02:26:23 阅读 我要评论

因为它这个是创建时自动加载的ArrayStore(关键字是:data: ds),没有动态增加的示例,但我们的项目需要有三个列表框,并且后两个的内容要根据第一个列表框内容动态的加载,因此要在选择第一个列表框的内容时,动态填充后两个的内容.我比较佩服exjts的示例写作人员,这些应该在示例中体现的功能,他们都没有写到,包括之前的2.2版本的示例,网上也没有搜索到,害我找了一天如何动态控制列表数据的功能.首先说明一下,我的方法也不是官方的方法,只是自己灵机一动想到的,下面是动态增加列表项的方法. 在方法之前我的关于multiselect对象的store是这样定义的: 复制代码 代码如下:flowDs = new Ext.data.ArrayStore({ data: [[123,123]], fields: ['value','text'] }); (1)var toflowStore = msForm.getForm().findField('toflow').store; //根据名称得到multiselect对象的store对象; (2)创建一个Ext.data.Record对象,这正在我想了好久的增加方法,也怪自己太笨了: 复制代码 代码如下:var record = new Object(); record.value = "2"; record.text = "3"; var records = new Ext.data.Record(record); (3) 将创建的Ext.data.Record对象加至multiselect的store对象中: toflowStore.add(record1); 通过以上三步就可以为列表multisleect动态增加列表项了,提醒一下删除某项可以通过remove()/removeAll()方法,具体的使用方法可以通过示例代码的ItemSelector.js中查到. 通过以上分析后,大致可以简单估计到multiselect的创建规则,在store中有一个属性fields: ['value','text'],则在创建时,系统会通过循环的方式将属性data:[[123,123]]中的内容创建为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的工程师是不是如此设计他们的程序,还没有仔细研究.

  推荐阅读

  JavaScript this 深入理解

最近一段时间看了很多JavaScript 的库源码, 如 prototype, Ext core 等。这些库中大量应用到了这一概念。直到昨天翻了一下《JavaScript王者归来》这本书才算对this有一个深刻的理解。 大至归结一下: 1. 函数调用>>>详细阅读


本文标题:extjs 列表框(multiselect)的动态添加列表项的方法

地址:http://www.17bianji.com/kaifa2/JS/28339.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)