如何实现flex中dategrid中全选、选中功能
我有一个这样的功能需要实现:左边一个datagrid,用来显示用户组,点击datagrid每一个item(每一行用户组数据)时候,显示另一个datagrid(显示用户组权限),如果已经数据库用户组已经分配权限值的时候,右边的datagrid权限处于选中状态,如果没有分配权限,就不选中,还有做一个全选功能,如果用jsp就比较好实现,但是在flex实现起来相当之麻烦,开始用datagrid渲染,感觉好麻烦,而且自己水平有限,好像实现不出来,望各位指点指点???
[解决办法]
这要看你怎么给数据了,比如,<users><user><access></access><access></access></user><user>....</users>这样,那你左边的dataGrid绑定到这个数据,labelField设成user的名字,然后右边的dataGrid绑定到左边dataGrid的selectedItem, 然后labelField设成access的名字,做个itemRenderer,比如一个CheckBox,绑到
是否分配权限的数据。
全选功能,也就是对第二个dataGrid的数据,for each一次,把分配权限的数据给设定上去。
[解决办法]
在flex里,datagrid之类的列表组件是数据驱动的
数据驱动的核心就是,改变数据就可以改变组件的显示
因此在flex里,可以认为是最简单的操作方式,只需要对数据进行处理就可以实现选择的效果,举例来说
在列表中的数据某一些选中,而另一些不选中,那么可以安排数据中的一个字段保存这个状态
比如是一个用户对象,有id、name、age、sex等属性,那么可以再动态的定义一个selected,因为as是动态语言,只要不声明强类型,任意数据对象是可以动态添加属性的
只需要用遍历,将需要被勾选的对应用户的selected属性设为true
然后结合itemRenderer,将checkbox的selected属性赋值为data的selected值,并实现checkbox的选中后改变data的selected值,这样就完成了整个数据驱动的关联操作。
相关的内容其实在riachina3群的共享里有个关于列表组件的教程,里面有更详细的讲解。