关于jquery的easyUI树形控件问题

<inputid="buildfloor" value="1"/> //这是绑定的树形控件

$('#buildfloor').combotree({ //这是javascript从数据库取数据
url: sy.contextPath +'/master/build!bindCombox.eh',
valueField:'id',
textField:'text',
required: true
});

synchronizedpublic void bindCombox() //这是java action中的方法已取到数据,
{
//Json json=new Json();
HqlFilter hqlFilter=newHqlFilter(getRequest());
hqlFilter.addFilter("QUERY_t#deleteFlag_I_EQ","0");
hqlFilter.addFilter("QUERY_t#type_S_EQ","buildFloor");
List<Dictionary>dictionaryList=dictionaryServiceI.findByFilter(hqlFilter);
ArrayList<String>id=new ArrayList<String>();
for(inti=0;i<dictionaryList.size();i++)
{
id.add(dictionaryList.get(i).getValue());
}
//String[] buildfloor=build.getBuildNo().split(",");
writeJson(id);
}
我想把Dictionary中的两个属性放到jquery easyui中的树形下拉选框中,请问怎么实现啊。

这个是我现在的效果,但我想实现下面的效果,求大神给个例子啊。或者帮我改下。

ComboTree的数据结构和Tree一样

每个node节点都有这些属性,你想把QUERY_t#deleteFlag_I_EQ和QUERY_t#type_S_EQ两个属性放进去,可以放到attributes中形如:

attributes:[{

    QUERY_t#deleteFlag_I_EQ:“具体值”,

    QUERY_t#type_S_EQ:"具体值"

}]

当然这种形式的数据要你自己转换成json类型的。

不能解决可以提问,互相探讨,希望可以帮到你!

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-19
easyui-tree 数据是要把子节点的数据放到父节点的children参数里面
public class TreeNode 这是我自己定义的一个java类,里面的属性写在下面

private String id;
private String text;//菜单名字
private String iconCls;//菜单图标样式名
private String state;//状态
private boolean checked;
private List<TreeNode> children;//子节点list
private Map<String, Object> attributes;//节点数据

public TreeNode(String id, String text, //TreeNode的构造方法
Map<String, Object> attributes) {
super();
this.id = id;
this.text = text;
this.children = new ArrayList<TreeNode>();
this.attributes = attributes;
}

action里面

List<TreeNode> nodes = new ArrayList<TreeNode>();创建一个可以放TreeNode的list
Map<String,TreeNode> map=new LinkedHashMap<String, TreeNode>();//存放节点用

HqlFilter hqlFilter=newHqlFilter(getRequest());
hqlFilter.addFilter("QUERY_t#deleteFlag_I_EQ","0");
hqlFilter.addFilter("QUERY_t#type_S_EQ","buildFloor");
List<Dictionary>dictionaryList=dictionaryServiceI.findByFilter(hqlFilter);
你需要知道你的Dictionary 上下级关系的id
for(int i=0;i<dictionaryList.size();i++) {
Dictionary t = dictionaryList.get(i);
Map<String,Object> beanMap=MapUtil.beanToMap(t );//把一个实体类转换成一个map 方法在下面
节点id,树显示时的名称
TreeNode treeNode = new TreeNode(id, name, beanMap);
if(t是父节点){
map.put(id,treeNode);

nodes .add(treeNode);
} else{
TreeNode treeNode1 = map.get(t的父id);

treeNode1 .appendChild(treeNode1 );
}

}
writeJson(nodes );
最后返回nodes
大概的过程就是这样,希望对你有帮助 atrributes里面就是存放了Dictionary里面的所有属性

public class MapUtil

/**
* 将一个 JavaBean 对象转化为一个 Map
* @param bean 要转化的JavaBean 对象
* @return returnMap 转化出来的 Map 对象
*/
public static <T> Map<String, Object> beanToMap(T bean) {

Class<? extends Object> type = bean.getClass();
Map<String, Object> returnMap = new HashMap<String, Object>();

try {
BeanInfo beanInfo = Introspector.getBeanInfo(type);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor descriptor : propertyDescriptors) {
String propertyName = descriptor.getName();
if (!propertyName.equals("class")) {
Method readMethod = descriptor.getReadMethod();
Object result = readMethod.invoke(bean, new Object[0]);
returnMap.put(propertyName, result != null ? result : "");
}
}
} catch (IntrospectionException e) {
throw new RuntimeException("分析类属性失败", e);
} catch (IllegalAccessException e) {
throw new RuntimeException("分析类属性失败", e);
} catch (InvocationTargetException e) {
throw new RuntimeException("分析类属性失败", e);
}
return returnMap;
}本回答被提问者采纳

我有一个树形选择控件,Jquery的,它默认是收缩的,怎么将他默认是展开的...
\/\/prerendered: true,加载之后是否打开节点 \/\/url:""});prerendered: true 这个参数是控制是否展开的 你的意思是将树的第一层节点加载后直接是展开状态的话这样设置就可以了.

JQuery easyUI中的treegrid控件,当节点个数大于90个后,竟无法展开后续...
开发人员工具监视下你的数据流量,看看展开到90以后还有没有获取数据,会不会是后台已经不输送数据了

jquery-easyui的datagrid(树表),复选框怎么半选?
没有单选,只能设置多选 checkbox,如果你要单选,只能js控制了。var rows = grid.getCheckedRows();rows.length ==1

jquery easyUI的树型网格要求的js格式必须拼成纵深的children形式吗,这样...
可以直接返回整个树的json 我这边的树的数据不是很多最多也就几千条,所以都是查询所有数据,然后递归出整个需要的json。如果数据很多的话这种方式就不太适合,要像你一样分级加载了,点开的时候再加载下一层

jQuery easyui 有哪些组件是缺失的?或者不好用的,然后这些不足之处...
TREE,这个组件性能较差,可用其他tree组件替换;datagrid,这个组件如果加载数据较多时,数据列的高度设置为固定,否则性能差;datepiker,datetimepiker,日期控件性能很差,考虑用my97datepiker;以上,easyui的组件在IE浏览器用,渲染很差

关于JQUERY EASYUI TREE的问题 求助!!
用setTime 重新加载一下tree的数据

jquery easyui怎么动态改treegrid表上的toolbar的按钮的样式和文字
toolbar内定义的iconCls 可以设置图标,text可以设置文本,disabled:true就可以禁用按钮了 例如你可以看下demo toolbar:[{ id:'btnadd',text:'Add',iconCls:'icon-add',handler:function(){ ('#btnsave').linkbutton('enable');alert('add')} },{ id:'btncut',text:'Cut',iconCls:'icon-...

jquery easyui布局时,当点了左边的面板时可以在右侧的内容中显示一个d...
左边是一棵树 点击树节点,加载一个页面 点击事件里面调用addTab(node.text, url);function addTab(subtitle, url) { ("#tabs").tabs("add", {title:subtitle, content:s, closable:false, fit:true, width:$("#mainFrame").width(), height:$("#mainFrame").height()});} function ...

关于jquery easyui 控件显示位置的问题
我怀疑可能是你没有给 div指定宽度我是这么用的: html代码 控制面板 更换皮肤

easyui-combotree数据源json格式赋值有什么需要需要注意的
jquery easyui之tree控件的数据格式化有如下属性: id:节点ID,对加载远程数据很重要 text:显示节点文本 state:节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点 checked:表示该节点是否被选中 attri

相似回答