代码之家  ›  专栏  ›  技术社区  ›  Alex L

extjs:如何更改树节点属性?

  •  4
  • Alex L  · 技术社区  · 15 年前

    如何更改树节点的属性?

    一个树节点具有以下属性:

    {"id":"75",
    "description":"My Tree Node",
    "status":"25"
    "uiProvider":"col",
    "leaf":true}
    

    现在,我的脚本接收以下数据

    {
    "id":"75",
    "status":"100",
    "cls":"done"
    }
    

    我尝试更新属性( 更新的 )以下内容:

    // a.result.data has the new data and taskID is the node's id
    for (var property in a.result.data)
    { 
      tree.getNodeById(taskID).attributes[property] = a.result.data[property];
    }
    

    但是,树不会得到更新。

    如何使树显示更改? 我需要节点更改现有属性并添加新属性。

    谢谢你的帮助!

    1 回复  |  直到 12 年前
        1
  •  2
  •   timdev    12 年前

    extjs forums :

    function refreshNodeColumns(n)
    {
        var t = n.getOwnerTree();
        var a = n.attributes;
        var cols = t.columns;
        var el = n.ui.getEl().firstChild; // <div class="x-tree-el">
        var cells = el.childNodes;
    
        //<div class="x-tree-col"><div class="x-tree-col-text">
    
        for(var i = 1, len = cols.length; i < len; i++)
        {
            var d = cols[i].dataIndex;
            var v = (a[d]!=null)? a[d] : '';
            if (cols[i].renderer) v = cols[i].renderer(v);
            cells[i].firstChild.innerHTML = v;        
        }
    } 
    

    如果在更新循环之后调用它,应该可以工作。