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

时间:2009-10-07 18:36:54

标签: javascript extjs

如何更改树节点的属性?

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

{"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 个答案:

答案 0 :(得分:2)

来自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;        
    }
} 

如果在更新循环后调用它,则应该有效。