用extjs4也有一段时间了,最近一直在用extjs4的可编辑表格,但是用的途中,照着api看,却发现有些函数功能无法使用.用的也有点痛苦.从今天开始,对extjs的公共使用方法总结,方便以后开发使用。今天要介绍的是获取树形表格空间的所有元素.废话不多说了,直接上代码.
//遍历treegrid的数据
var temptreebodesdata = [];//临时存储数据
/**
* 获取所有根节点下的节点的数据
* treegrid : treegrid对象
* flag : 数据是否包含根节点 true:包含根节点,其他 :不包含
* showLevel : 导出时是否显示层次,true显示
* fieldName : 指标名称的字段
* return: 返回一个数据的对象数组
*/
function getAllRoot(treegrid, flag, showLevel, fieldName){
temptreebodesdata = [];
var rootNode = treegrid.getRootNode();//获取根节点
var tmprn = null;
if (flag) {
tmprn = rootNode.data;
tmprn.children = null;
temptreebodesdata.push(tmprn);
}
findchildnode(rootNode, showLevel, 0, fieldName); //开始递归
return temptreebodesdata;
}
//获取所有的子节点
function findchildnode(node, showLevel, level, fieldName){
var childnodes = node.childNodes;
var blank = "";
if (showLevel) {
level = level + 1;
for (var i = 1; i < level; i++) {
blank = blank + " ";
}
}
Ext.each(childnodes, function (){ //从节点中取出子节点依次遍历
var nd = this;
var tmpnd = nd.data;
tmpnd.children = null;
if (showLevel) {
var v = blank + tmpnd[fieldName];
tmpnd[fieldName] = v;
}
temptreebodesdata.push(tmpnd);
if(nd.hasChildNodes()){ //判断子节点下是否存在子节点
findchildnode(nd, showLevel, level, fieldName); //如果存在子节点 递归
}
});
}
//--------结束获取树形节点------------