我有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)&它现在看起来像这样。
我无法想出一种动态设置进度百分比的方法。我有一个函数得到如下进展:
function GetCallroundProgress($event_id)
我想以某种方式动态设置进度,可能如下:
echo TbHtml::stackedProgressBar(array(
array('color' => TbHtml::PROGRESS_COLOR_SUCCESS,
'width' => GetCallroundProgress($event_id)),
但是如何在event_id
TbGridView
答案 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