1
0

添加CSS类和链接到Ctreeview节点

2011/08/06 · 评论 

之前在Yii wiki上写了一个英文版的,所以这里顺便写一下中文版的。

这篇文章将向您解释怎样添加css类和链接到Ctreeview的节点上,然后你可以利用这个css类和链接进行事件处理, 比如点击事件等等。这篇文章的实现结果要基于另一篇文章,关于怎样添加ctreeview到你网站应用中。

假设你已经建立好ctreeview的树状结构,那么你应该有以下代码:

public function actionAjaxFillTree()
    {
        if (!Yii::app()->request->isAjaxRequest) {
            exit();
        }
        $parentId = "NULL";
        if (isset($_GET['root']) && $_GET['root'] !== 'source') {
            $parentId = (int) $_GET['root'];
        }
        $req = Yii::app()->db->createCommand(
            "SELECT m1.id, m1.name AS text, m2.id IS NOT NULL AS hasChildren "
            . "FROM tree AS m1 LEFT JOIN tree AS m2 ON m1.id=m2.parent_id "
            . "WHERE m1.parent_id <=> $parentId "
            . "GROUP BY m1.id ORDER BY m1.name ASC"
        );
        $children = $req->queryAll();
        echo str_replace(
            '"hasChildren":"0"',
            '"hasChildren":false',
            CTreeView::saveDataAsJson($children)
        );
        exit();
    }

在上面的代码中找到 $children = $req->queryAll(), 在其之后添加以下代码来插入链接到各个节点中,你也可以同时添加css类或id.

$treedata=array();
foreach($children as $child){
     $options=array('href'=>'#','id'=>$child['id'],'class'=>'treenode');
     $nodeText = CHtml::openTag('a', $options);
     $nodeText.= $child['text'];
     $nodeText.= CHtml::closeTag('a')."\n";
     $child['text'] = $nodeText;
     $treedata[]=$child;
}

最后用以下代码

CTreeView::saveDataAsJson($children)

替换以下代码

CTreeView::saveDataAsJson($treedata)

这样就大功告成了。

您可能也喜欢

与大家分享点什么吧: