鍍金池/ 教程/ PHP/ Yii Framework 開發(fā)教程(19) UI 組件 TreeView 示例
Yii Framework 開發(fā)教程(16) UI 組件 StarRating 示例
Yii Framework 開發(fā)教程(2) Yii Web 應(yīng)用基礎(chǔ)
Yii Framework 開發(fā)教程(19) UI 組件 TreeView 示例
Yii Framework 開發(fā)教程(39) Zii 組件-Slider 示例
Yii Framework 開發(fā)教程(45) Zii 組件-Selectable 示例
Yii Framework 開發(fā)教程(44) Zii 組件-Resizable 示例
Yii Framework 開發(fā)教程(8) 使用 FormModel
Yii Framework 開發(fā)教程(42) Zii 組件-Draggable 示例
Yii Framework 開發(fā)教程(18) UI 組件 TextHighlighter 示例
Yii Framework 開發(fā)教程(32) Zii 組件-GridView 示例
Yii Framework 開發(fā)教程(30) Zii 組件-ListView 示例
Yii Framework 開發(fā)教程(9) UI 組件 Widget 概述
Yii Framework 開發(fā)教程(17) UI 組件 TabView 示例
Yii Framework 開發(fā)教程(24) 數(shù)據(jù)庫-DAO 示例
Yii Framework 開發(fā)教程(25) 數(shù)據(jù)庫-Query Builder 示例
Yii Framework 開發(fā)教程(21) UI 組件 自定義 Captcha 示例
Yii Framework 開發(fā)教程(38) Zii 組件-ProgressBar 示例
Yii Framework 開發(fā)教程(20) UI 組件 Captcha 示例
Yii Framework 開發(fā)教程(14) UI 組件 MaskedTextField 示例
Yii Framework 開發(fā)教程(22) UI 組件 Zii 組件簡介
Yii Framework 開發(fā)教程(31) Zii 組件-DetailView 示例
Yii Framework 開發(fā)教程(33) Zii 組件-Accordion 示例
Yii Framework 開發(fā)教程(36) Zii 組件-DatePicker 示例
Yii Framework 開發(fā)教程(6) CComponent 組件
Yii Framework 開發(fā)教程(37) Zii 組件-Dialog 示例
Yii Framework 開發(fā)教程(26) 數(shù)據(jù)庫-Active Record 示例
Yii Framework 開發(fā)教程(29) Zii組件-Menu 示例
Yii Framework 開發(fā)教程(46) Zii 組件-Sortable 示例
Yii Framework 開發(fā)教程(10) UI 組件 自定義組件
Yii Framework 開發(fā)教程(11) UI 組件 ActiveForm 示例
Yii Framework 開發(fā)教程(43) Zii 組件-Droppable 示例
Yii Framework 開發(fā)教程(27) 數(shù)據(jù)庫-關(guān)聯(lián) Active Record 示例
Yii Framework 開發(fā)教程(47) 主題 Theme 示例
Yii Framework 開發(fā)教程(48) 多國語言示例
Yii Framework 開發(fā)教程(35) Zii 組件-Button 示例
Yii Framework 開發(fā)教程(3) 為應(yīng)用添加日志
Yii Framework 開發(fā)教程(23) 數(shù)據(jù)庫-概述
Yii Framework 開發(fā)教程(12) UI 組件 ClipWidget 示例
Yii Framework 開發(fā)教程(41) Zii 組件-Tabs 示例
Yii Framework 開發(fā)教程(34) Zii 組件-AutoComplete 示例
Yii Framework 開發(fā)教程(40) Zii 組件-SliderInput 示例
Yii Framework 開發(fā)教程(5) URL 管理
Yii Framework 開發(fā)教程(4) Hangman 猜單詞游戲?qū)嵗?/span>
Yii Framework 開發(fā)教程(15) UI 組件 MultiFileUpload 示例
Yii Framework 開發(fā)教程(7) 使用 CHtml 創(chuàng)建 Form
Yii Framework 開發(fā)教程(28) Data Provider 簡介
Yii Framework 開發(fā)教程(1) 第一個(gè)應(yīng)用 Hello World
Yii Framework 開發(fā)教程(13) UI 組件 ContentDecorator 示例

Yii Framework 開發(fā)教程(19) UI 組件 TreeView 示例

CTreeView 用來顯示具有層次結(jié)構(gòu)的數(shù)據(jù),使用 TreeView 通過設(shè)置 Data 屬性。Data 為具有下面結(jié)構(gòu)的數(shù)組:

  • ext: string, 樹節(jié)點(diǎn)的文本.
  • expanded: boolean,可選,表示該節(jié)點(diǎn)是否展開.
  • id: string, 可選,該節(jié)點(diǎn)ID.
  • hasChildren: boolean, 可選,缺省為 False,當(dāng)為 True 表示該節(jié)點(diǎn)含有子節(jié)點(diǎn).
  • children: array,可選,子節(jié)點(diǎn)數(shù)組。.
  • htmlOptions: array, HTML 選項(xiàng)。

到目前為止我們還沒有介紹讀取數(shù)據(jù)庫,因此本例使用 Hard Code 的數(shù)據(jù)如下:


    array(
      'text' =>  '<a id="27" href="#">World:4</a>' ,
      'id' =>  '27' ,
      'hasChildren' =>  true,
      'children' =>
        array
          (
            array(
              'text' =>  '<a id="1" href="#">Europa:3</a>' ,
              'id' =>  '1' ,
              'hasChildren' =>  true,
              'children' =>
                array
            (
                array(
                    'text' =>  '<a id="3" href="#">Germany:3</a>' ,
                    'id' =>  '3' ,
                    'hasChildren' =>  true,
                    'children' =>
                    array
                    (
                        array(
                            'text' =>  '<a id="15" href="#">Munich:0</a>' ,
                            'id' =>  '15' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="16" href="#">Stuttgart:0</a>' ,
                            'id' =>  '16' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="5" href="#">Berlin:0</a>' ,
                            'id' =>  '5' ,
                            'hasChildren' =>  false,
                            )
                        )),
                array(
                    'text' =>  '<a id="2" href="#">Norway:3</a>' ,
                    'id' =>  '2' ,
                    'hasChildren' =>  true,
                    'children' =>
                    array
                    (
                        array(
                            'text' =>  '<a id="10" href="#">Stavanger:0</a>' ,
                            'id' =>  '10' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="12" href="#">Oslo:0</a>' ,
                            'id' =>  '12' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="11" href="#">Bergen:0</a>' ,
                            'id' =>  '11' ,
                            'hasChildren' =>  false,
                            ))),
                array(
                    'text' =>  '<a id="4" href="#">United Kingdom:2</a>' ,
                    'id' =>  '4' ,
                    'hasChildren' =>  true,
                    'children' =>
                    array(

                        array(
                            'text' =>  '<a id="13" href="#">London:0</a>' ,
                            'id' =>  '13' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="14" href="#">Manchester:0</a>' ,
                            'id' =>  '14' ,
                            'hasChildren' =>  false,
                            ))),
                array(
                    'text' =>  '<a id="7" href="#">Asia:3</a>' ,
                    'id' =>  '7' ,
                    'hasChildren' =>  true,
                    'children' =>
                    array
                    (
                        array(
                            'text' =>  '<a id="18" href="#">Japan:0</a>' ,
                            'id' =>  '18' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="20" href="#">China:0</a>' ,
                            'id' =>  '20' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="19" href="#">Indonesia:0</a>' ,
                            'id' =>  '19' ,
                            'hasChildren' =>  false,
                            )
                        )),
                array(
                    'text' =>  '<a id="9" href="#">America:4</a>' ,
                    'id' =>  '9' ,
                    'hasChildren' =>  true,
                    'children' =>
                    array
                    (
                        array(
                            'text' =>  '<a id="23" href="#">Canada:0</a>' ,
                            'id' =>  '23' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="24" href="#">United States:0</a>' ,
                            'id' =>  '24' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="25" href="#">Mexico:0</a>' ,
                            'id' =>  '25' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="26" href="#">Argentina:0</a>',
                            'id' =>  '26' ,
                            'hasChildren' =>  false,
                            ))),
                array(
                    'text' =>  '<a id="8" href="#">Africa:2</a>' ,
                    'id' =>  '8' ,
                    'hasChildren' =>  true,
                    'children' =>
                    array(

                        array(
                            'text' =>  '<a id="22" href="#">Kenya:0</a>' ,
                            'id' =>  '22' ,
                            'hasChildren' =>  false,
                            ),
                        array(
                            'text' =>  '<a id="21" href="#">Tanzania:0</a>' ,
                            'id' =>  '21' ,
                            'hasChildren' =>  false
                            )
                        )
                    )
                )))));

這里為每個(gè)節(jié)點(diǎn)的文本都添加了一個(gè)鏈接 同時(shí)也演示了使用 JQuery 響應(yīng)節(jié)點(diǎn)的點(diǎn)擊事件,這是通過客戶端 JavaScripts 來實(shí)現(xiàn)的。

修改 View 定義


    <?php
    $cs=Yii::app()->clientScript;
    $cs->registerScript('menuTreeClick', "
        jQuery('#menu-treeview a').click(function() {
            alert('Node #'+this.id+' was clicked!');
            return false;
        });
    ");

    $this->widget('CTreeView',array(
        'id'=>'menu-treeview',
        'data'=>DataModel::getDummyData(),

        'control'=>'#treecontrol',
        'animated'=>'fast',
        'collapsed'=>true,
        'htmlOptions'=>array(
                    'class'=>'filetree'
                    )
                ));
    ?>

clientScript 的 registerScript 用來做客戶端定義 JavaScripts。

http://wiki.jikexueyuan.com/project/yii-development-tutorial/images/19.1.jpg" alt="picture19.1" />

本例下載