ExtJS的树用过好多次了,但是今天是第一次用加复选框的,要实现的效果是这样的:点击页面上的“自选”按钮,弹出一个窗口,窗口上有一棵树和一个Grid,选择树节点时向Grid里添加数据,取消选择树节点时将Grid里面对应的记录删掉,而且选择或取消选择父节点时可以将其子节点的数据从Grid中添加或删除。
去除其他无关代码,主要代码如下:
前台JS:
取树节点的文件ComTree.ashx中的相关代码:
ComTree.ashx文件中返回数据的格式(即节点数据的格式)是:[{text:'',id:''},{text:'',id:''}],text和id是必须的,分别是节点的id和显示文字,还有一个icon,是节点前的小图标的URL,如果返回了icon,就会把默认的小图标换成返回路径的图标。
当勾选或取消了一个节点时,我是采用遍历的方法来操作数据的,那么问题来了,如果所选的是一个叶子节点,直接操作该条数据即可,但是如果选择的是一个非页节点的节点,并且该节点有很多子节点,一个一个遍历来操作子节点对应的数据这种法则速度会很慢,不知道有没有人知道更好的方法。