在TbGridView列中设置TbHtml :: stackedProgressBar的进度

时间:2014-04-18 07:41:41

标签: twitter-bootstrap yii

我有TbGridview使用CActiveDataProvider来源显示一些数据。代码如下:

$this->widget('bootstrap.widgets.TbGridView', array(
        'type' => 'striped bordered condensed small',
        'id' => 'event-grid',
        'template' => '{items}',
        'dataProvider' => Event::model()->getAssignedEvents(),
        'columns' => array(
            array(
                'name' => 'Event Name',
                'type' => 'raw',
                'value' => 'CHtml::link(CHtml::encode("$data->name"),
                                        array("//callround/index","event"=>$data->event_id))',
            ),
            array(
                'htmlOptions' => array('width' => '100'),
                'name' => 'Progress',
                'type' => 'raw',
                'value' => function() {
                    echo TbHtml::stackedProgressBar(array(
                    array('color' => TbHtml::PROGRESS_COLOR_SUCCESS, 'width' => 35),
            ));
        },
            ),
        ),
    ));

第一列有一个URL,第二列有一个TbHtml :: stackedProgressBar。我已经对进度条的百分比进行了硬编码(为35)&它现在看起来像这样。

enter image description here

我无法想出一种动态设置进度百分比的方法。我有一个函数得到如下进展:

function GetCallroundProgress($event_id)

我想以某种方式动态设置进度,可能如下:

 echo TbHtml::stackedProgressBar(array(
                    array('color' => TbHtml::PROGRESS_COLOR_SUCCESS,
 'width' => GetCallroundProgress($event_id)),

但是如何在event_id

中获得TbGridView

1 个答案:

答案 0 :(得分:0)

好的,这是一个相当愚蠢的问题。但无论如何我都会发布答案,所以有些像我这样的菜鸟有一天会发现它很有用。

在我的代码中,我必须将$data变量传递给我绘制进度条的函数:

array(
                'htmlOptions' => array('width' => '100'),
                'name' => 'Progress',
                'type' => 'raw',
                'value' => function($data) {
                    echo TbHtml::stackedProgressBar(array(
                    array('color' => TbHtml::PROGRESS_COLOR_SUCCESS, 'width' => Globals::GetCallroundProgress($data->event_id)),
            ));
        },
            ),

然后我可以使用函数中保存的任何值$data - 在我的情况下我可以使用

$data->event_id