﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-幻想天堂-文章分类-YUI</title><link>http://www.blogjava.net/x03570227/category/37421.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 24 Feb 2009 20:45:47 GMT</lastBuildDate><pubDate>Tue, 24 Feb 2009 20:45:47 GMT</pubDate><ttl>60</ttl><item><title>YUI - treeView 通过JSON结构的数据构建数据表格</title><link>http://www.blogjava.net/x03570227/articles/255444.html</link><dc:creator>菜板</dc:creator><author>菜板</author><pubDate>Thu, 19 Feb 2009 04:55:00 GMT</pubDate><guid>http://www.blogjava.net/x03570227/articles/255444.html</guid><wfw:comment>http://www.blogjava.net/x03570227/comments/255444.html</wfw:comment><comments>http://www.blogjava.net/x03570227/articles/255444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/x03570227/comments/commentRss/255444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/x03570227/services/trackbacks/255444.html</trackback:ping><description><![CDATA[<span style="font-family: Georgia">今天先讲下YUI的数据表格中,从服务端获取数据和根据服务端数据排序的方法.官方示例的地址:<a href="http://developer.yahoo.com/yui/treeview/">http://developer.yahoo.com/yui/treeview/</a><br />
首先是必备的js,css文件的引入,可以从以下地址配置:<a href="http://developer.yahoo.com/yui/articles/hosting/?treeview#configure">http://developer.yahoo.com/yui/articles/hosting/?treeview#configure</a><br />
<br />
JSON数据格式<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">[<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;'Label&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">',<br />
<img id="Codehighlighter1_15_95_Open_Image" onclick="this.style.display='none'; Codehighlighter1_15_95_Open_Text.style.display='none'; Codehighlighter1_15_95_Closed_Image.style.display='inline'; Codehighlighter1_15_95_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_15_95_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_15_95_Closed_Text.style.display='none'; Codehighlighter1_15_95_Open_Image.style.display='inline'; Codehighlighter1_15_95_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_15_95_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_15_95_Open_Text"><span style="color: #000000">{type:'Text',&nbsp;label:'text&nbsp;label&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">',&nbsp;title:'</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;is&nbsp;the&nbsp;tooltip&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;text&nbsp;label&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">'}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_99_212_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_212_Open_Text.style.display='none'; Codehighlighter1_99_212_Closed_Image.style.display='inline'; Codehighlighter1_99_212_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_99_212_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_99_212_Closed_Text.style.display='none'; Codehighlighter1_99_212_Open_Image.style.display='inline'; Codehighlighter1_99_212_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_99_212_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_99_212_Open_Text"><span style="color: #000000">{type:'Text',&nbsp;label:'branch&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">',&nbsp;title:'there&nbsp;should&nbsp;be&nbsp;children&nbsp;here',&nbsp;expanded:</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;children:[<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Label&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">0</span><span style="color: #000000">'<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;]}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_216_519_Open_Image" onclick="this.style.display='none'; Codehighlighter1_216_519_Open_Text.style.display='none'; Codehighlighter1_216_519_Closed_Image.style.display='inline'; Codehighlighter1_216_519_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_216_519_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_216_519_Closed_Text.style.display='none'; Codehighlighter1_216_519_Open_Image.style.display='inline'; Codehighlighter1_216_519_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_216_519_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_216_519_Open_Text"><span style="color: #000000">{type:'Text',label:'YAHOO',title:'</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;should&nbsp;be&nbsp;an&nbsp;href',&nbsp;href:'http:</span><span style="color: #008000">//</span><span style="color: #008000">www.yahoo.com',&nbsp;target:'somewhere&nbsp;new'},</span><span style="color: #008000"><br />
<img id="Codehighlighter1_330_391_Open_Image" onclick="this.style.display='none'; Codehighlighter1_330_391_Open_Text.style.display='none'; Codehighlighter1_330_391_Closed_Image.style.display='inline'; Codehighlighter1_330_391_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_330_391_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_330_391_Closed_Text.style.display='none'; Codehighlighter1_330_391_Open_Image.style.display='inline'; Codehighlighter1_330_391_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_330_391_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_330_391_Open_Text"><span style="color: #000000">{type:'HTML',html:'</span><span style="color: #000000">&lt;</span><span style="color: #000000">a&nbsp;href</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">developer.yahoo.com/yui</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">YUI</span><span style="color: #000000">&lt;/</span><span style="color: #000000">a</span><span style="color: #000000">&gt;</span><span style="color: #000000">'}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_395_516_Open_Image" onclick="this.style.display='none'; Codehighlighter1_395_516_Open_Text.style.display='none'; Codehighlighter1_395_516_Closed_Image.style.display='inline'; Codehighlighter1_395_516_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_395_516_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_395_516_Closed_Text.style.display='none'; Codehighlighter1_395_516_Open_Image.style.display='inline'; Codehighlighter1_395_516_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_395_516_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_395_516_Open_Text"><span style="color: #000000">{type:'MenuNode',label:'branch&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">',title:'</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;is&nbsp;a&nbsp;menu&nbsp;node',&nbsp;expanded:</span><span style="color: #0000ff">false</span><span style="color: #000000">,&nbsp;children:[<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Label&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">-</span><span style="color: #000000">0</span><span style="color: #000000">',<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Label&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">'<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;]}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />]</span></div>
</span><br />
当然,实际情况是你不一定返回一模一样的格式,但可以根据自己的结构来生成这样的格式!<br />
下面是项目中用到的一个用来获取这种格式的方法(注:我的方法属于比较笨的方法,用的是递归循环)<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">YAHOO.uunav.getCatalogTree&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(root){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:</span><span style="color: #000000">"</span><span style="color: #000000">${contextPath}/ajax/catalog!initTree.act</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">从服务器获取数据</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType:</span><span style="color: #000000">"</span><span style="color: #000000">json</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;async&nbsp;:</span><span style="color: #0000ff">false</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:</span><span style="color: #0000ff">function</span><span style="color: #000000">(data){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(data.records)</span><span style="color: #000000">!=</span><span style="color: #000000">"</span><span style="color: #000000">undefined</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">createNodes(data.records,</span><span style="color: #000000">"</span><span style="color: #000000">menu</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">一个递归的函数,用于生成符合YUI树标准的JSON对象</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;eval(str);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">其实刚刚的STR那只是个字符串,最后通过eval方法可以转成对象.</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
数据准备好了,下一步就是构建树了<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008000">//</span><span style="color: #008000">构建树结构</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YAHOO.uunav.buildTree</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">(treeContent){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;treeNodes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;YAHOO.uunav.getCatalogTree(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;tree</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;YAHOO.widget.TreeView(treeContent,treeNodes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.render();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;tree;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
上面的只是个方法,需要在页面load的时候加载,YUI有它自己的load事件,但我更喜欢JQUERY的,写法比较简单,呵呵<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_30_86_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_86_Open_Text.style.display='none'; Codehighlighter1_30_86_Closed_Image.style.display='inline'; Codehighlighter1_30_86_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_30_86_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_30_86_Closed_Text.style.display='none'; Codehighlighter1_30_86_Open_Image.style.display='inline'; Codehighlighter1_30_86_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(document).ready(</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_30_86_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_30_86_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;tree&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;YAHOO.uunav.buildTree(</span><span style="color: #000000">"</span><span style="color: #000000">catalogTree</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);</span></div>
<br />
如果你的树只是想做菜单,连接之用,到这里就可以了,但如果希望能够在响应单击事件的时候做出点其他动作,那还需要给tree注册事件<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">tree.subscribe('clickEvent',</span><span style="color: #0000ff">function</span><span style="color: #000000">(oArgs)&nbsp;{</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNodeClick(oArgs.node.data.id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</span></div>
<br />
合起来应该是下面这个样子<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">$(document).ready(</span><span style="color: #0000ff">function</span><span style="color: #000000">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;tree&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;YAHOO.uunav.buildTree(</span><span style="color: #000000">"</span><span style="color: #000000">catalogTree</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加结点单击事件</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree.subscribe('clickEvent',</span><span style="color: #0000ff">function</span><span style="color: #000000">(oArgs)&nbsp;{</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNodeClick(oArgs.node.data.id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</span></div>
<br />
对参数做下解释:<br />
oArgs.node.data:表示的是这个结点带的数据,而这些数据就是在生成树的JSON对象里面的,事实上,默认的最简单的树结点并没有oArgs.node.data.id这个数据,这个数据是在生成树结点JSON对象时加进去的,见如下代码:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;createNodes(list,nodeType){&nbsp;&nbsp; //这就是前面的递归生成结点JSON对象的函数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;treeNodeStr</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">[</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(list).each(</span><span style="color: #0000ff">function</span><span style="color: #000000">(i){</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(i</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;treeNodeStr</span><span style="color: #000000">+=</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNodeStr</span><span style="color: #000000">+=</span><span style="color: #000000">"</span><span style="color: #000000">{\</span><span style="color: #000000">"</span><span style="color: #000000">label\</span><span style="color: #000000">"</span><span style="color: #000000">:\</span><span style="color: #000000">""</span><span style="color: #000000">+this.names+</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">,\</span><span style="color: #000000">"</span><span style="color: #000000">id\</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">this</span><span style="color: #000000">.id</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp; //这里的id就是data对象里的id<br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">this</span><span style="color: #000000">.children.length</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNodeStr</span><span style="color: #000000">+=</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">children\</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">createNodes(</span><span style="color: #0000ff">this</span><span style="color: #000000">.children,nodeType)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNodeStr</span><span style="color: #000000">+=</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">type\</span><span style="color: #000000">"</span><span style="color: #000000">:\</span><span style="color: #000000">""</span><span style="color: #000000">+nodeType+</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">}</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNodeStr</span><span style="color: #000000">+=</span><span style="color: #000000">"</span><span style="color: #000000">]</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;treeNodeStr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
同样可以通过oArgs.node.data.label访问结点名字,不过也可以直接通过oArgs.node.label直接访问label,至于什么原因,看了<a href="http://developer.yahoo.com/yui/docs/YAHOO.widget.TreeView.html#event_clickEvent">API</a>就知道了<br />
<br />
看上去貌似还是有些复杂,大家只当是个参考吧!</span>
<img src ="http://www.blogjava.net/x03570227/aggbug/255444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/x03570227/" target="_blank">菜板</a> 2009-02-19 12:55 <a href="http://www.blogjava.net/x03570227/articles/255444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>YUI-dataTable 服务端分页及动态排序</title><link>http://www.blogjava.net/x03570227/articles/253734.html</link><dc:creator>菜板</dc:creator><author>菜板</author><pubDate>Sat, 07 Feb 2009 13:25:00 GMT</pubDate><guid>http://www.blogjava.net/x03570227/articles/253734.html</guid><wfw:comment>http://www.blogjava.net/x03570227/comments/253734.html</wfw:comment><comments>http://www.blogjava.net/x03570227/articles/253734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/x03570227/comments/commentRss/253734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/x03570227/services/trackbacks/253734.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天先讲下YUI的数据表格中,从服务端获取数据和根据服务端数据排序的方法.官方示例的地址:http://developer.yahoo.com/yui/examples/datatable/dt_dynamicdata.html首先是必备的js,css文件的引入,可以从以下地址配置:http://developer.yahoo.com/yui/articles/hosting/?datat...&nbsp;&nbsp;<a href='http://www.blogjava.net/x03570227/articles/253734.html'>阅读全文</a><img src ="http://www.blogjava.net/x03570227/aggbug/253734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/x03570227/" target="_blank">菜板</a> 2009-02-07 21:25 <a href="http://www.blogjava.net/x03570227/articles/253734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>