1
0
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)
这样就大功告成了。