南京 发表于 2013-7-30 09:43:55

关于comboTree三级绑定的问题

目前情况是这样子的:
演示系统当中,只能绑定到二级树,当选定到三级树进行编辑,comboTree只显示id号,并没有显示关联的名称。有没有人已经解决了此问题?












南京 发表于 2013-7-30 10:25:32

问题已经解决,进行数据递归。

南京 发表于 2013-7-30 12:04:50

解决方式如下:
修改CommonDao.java,找到
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in) {
                List<ComboTree> trees = new ArrayList<ComboTree>();
                for (Object obj : all) {
                        trees.add(comboTree(obj, comboTreeModel, in));
                }
                return trees;

      }
修改为:

public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in) {
                List<ComboTree> trees = new ArrayList<ComboTree>();
                for (Object obj : all) {
                        trees.add(comboTree(obj, comboTreeModel, in,true));
                }
                return trees;

      }
开启递归验证,找到如下方法,
private ComboTree comboTree(Object obj, ComboTreeModel comboTreeModel, List in, boolean recursive)
在reflectHelper.getMethodValue(comboTreeModel.getChildField());修改为:

List<?> childList = (List<?>) reflectHelper.getMethodValue(comboTreeModel.getChildField());
if (childList != null && childList.size() > 0) {
                        tree.setState("closed");
                        tree.setChecked(false);
                        if (recursive) {// 递归查询子节点
                            List<Object> list = new ArrayList<Object>(childList);
                            //Collections.sort(functionList, new SetListSort());// 排序
                            List<ComboTree> children = new ArrayList<ComboTree>();
                            for (Object f : list) {
                              ComboTree t = comboTree(f,comboTreeModel,in, true);
                              children.add(t);
                            }
                            tree.setChildren(children);
                        }
                }

请注意:这样修改完成后,树数据绑定功能正常,但会导致comboTree树的refresh面板的功能失效,具体原因没有查,不过只要做一个判断,过滤此递归即可。

最终的效果如下:




jueyue 发表于 2013-7-30 23:01:50

nb,这个bug应该已经改了
页: [1]
查看完整版本: 关于comboTree三级绑定的问题