TreePanel實現可以有多種,目前用到的有兩種實現方式:數據源可以一次性加載,第二單擊父類生成相關子類數據。
結構:TreePanel->放置TreeNode 以此迭代生成樹型菜單
那么如何實現TreePanel單擊取值?
第一反應:給TreePanel節點TreeNode添加單擊事件TreeNode.Listeners.Click.Handler
代碼:
tplMain:TreePanel的ID
//選擇按鈕Click function selectNode() { var selectionMode = tplMain.getSelectionModel(); var selection = selectionMode.selNode; //獲取選中的值 if (selection == null) { alert("請選擇"); } else { var v = selection.attributes.text; alert(v); } }
foreach (var item in childRow) { Ext.Net.TreeNode childNode = new Ext.Net.TreeNode { NodeID = item["FID"].ToString(), Text = item[rowField["DisplayField"].ToString()].ToString(), Qtip = item[rowField["DisplayField"].ToString()].ToString(), }; childNode.Listeners.Click.Handler = "selectNode() ;"; parNode.Nodes.Add(CreateNode(dtSource, childNode, item["FID"].ToString(), rowField)); }
得到的卻是:假如我第一次單擊的是‘華交會’得到的提示卻是“請選擇”, 第二次任意單擊其他則得到我要的‘華交會’ ,測試發現tplMain.getSelectionModel()取到的值是null
謎底還沒解除來,有ext高手的還請解釋下why??
解決方法:直接給TreePanel添加單擊事件TreePanel.Listeners.Click.Handler = "ClickNode(node)";
tplMain.Listeners.Click.Handler = "ClickNode(node)";
//樹 單擊取值主鍵FID function ClickNode(node) { alert(node.attributes.text); //alert(node.attributes.id); }
效果:
功能雖實現,但是第一種方法不行的原因還不是明白, 有ext高手的還請解釋下why??
作者:PEPE
出處:http://pepe.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。