假如Tree控件的数据源有三个属性,id,name,href分别代表节点的id,名字和链接,当我单击一个节点时,我如何得到该节点的href?(id和name可以通过节点自带的属性得到,但href是自定义属性,不知道如何得到)

解决方案 »

  1.   

    构造树节点的时候赋值 oNode.attributes = {href:'xxxxx'};
    点击的时候直接取 oNode.attributes.href
      

  2.   

    但是不知道如何得到对应该节点数据源。也就是说,不知道href的值是什么。
      

  3.   

    要看如何构造树
    例子:从xml构造树function treeNodeFromXml(oXmlEl) {
    if(oXmlEl.nodeType != 1) return null;
    var oCfg;
    oCfg = {text:oXmlEl.getAttribute("name")};
    oCfg.expanded = true;
    var oNode = new Ext.tree.TreeNode(oCfg);
    oNode.attributes = {
    guid:oXmlEl.getAttribute("guid"),
    teacher_name:oXmlEl.getAttribute("name"),
    ctype:oXmlEl.getAttribute("ctype")
    };
    oNode.on("click", editHandler);
    for(var i=0;i<oXmlEl.childNodes.length;i++){
    if (oXmlEl.childNodes[i].nodeType == 1) {
    var oChild = treeNodeFromXml(oXmlEl.childNodes[i]);
    if (oChild) oNode.appendChild(oChild);
    }
    }
    return oNode;
    }
      

  4.   

    你这里的节点是new出来的,但是我的节点是通过Loader自动生成的啊,会有冲突吗?不会要改Ext的底层代码吧?
    你这段代码可以自动获取到数据源对应的属性吗?
      

  5.   

    也是load加载的呀,load之后触发 构造树oProxy.load(null, {
    read: function(oResponse) {
    var oDoc = oResponse.responseXML;
    oTree.setRootNode(treeNodeFromXml(oDoc.documentElement||oDoc));
    }
    }, oTree.render, oTree);
      

  6.   

    我说的不是load,我说的是loader。例如:
    loader: new Ext.tree.TreeLoader({
       dataUrl: 'json.aspx',
       uiProviders: {
          'col': Ext.tree.ColumnNodeUI
       }
    })