基于 yii 中数据的 CGridView 中的样式列
Style columns in CGridView based on data in yii
是否可以根据数据设置 CGridView 的样式?
例如这两种情况:
或者我必须使用其他选项?
可以,可以通过数据指定css
class。使用 cssClassExpression 选项。
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
// ...
array(
'name'=>'Delta',
'value' => $data->value,
'cssClassExpression' => '$data->delta > 0 ? "up" : "down"',
),
// ...
),
));
您可以使用 cssClassExpression
数组(
'name' => 'status',
'value' => '$data->status0->title',
'cssClassExpression' => 调用函数或通过表达式执行,
),
这样你就可以为不同的行设置不同的class并为那个写相应的css
从其他答案可以清楚地看出,cssClassExpression
可用于此目的。我认为会有很多 if
语句,因此您不能对 cssClassExpression 使用内联 if
语句。
我会这样做。
1.首先在你的模型中定义一个方法,比如
public function checkColour()
{
if('value'<10)
{
return 'green quarter'
}
if('value'>10)
{
return 'yellow half'
}
}
基本上此方法会返回 class 个您已创建并希望用于特定条件的名称。
2. 然后我会像
那样使用它
'columns'=>array(
array(
'name'=>'nozare',
'cssClassExpression' => '$data->checkColour()'
),
),
是否可以根据数据设置 CGridView 的样式? 例如这两种情况:
或者我必须使用其他选项?
可以,可以通过数据指定css
class。使用 cssClassExpression 选项。
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
// ...
array(
'name'=>'Delta',
'value' => $data->value,
'cssClassExpression' => '$data->delta > 0 ? "up" : "down"',
),
// ...
),
));
您可以使用 cssClassExpression
数组( 'name' => 'status', 'value' => '$data->status0->title', 'cssClassExpression' => 调用函数或通过表达式执行, ),
这样你就可以为不同的行设置不同的class并为那个写相应的css
从其他答案可以清楚地看出,cssClassExpression
可用于此目的。我认为会有很多 if
语句,因此您不能对 cssClassExpression 使用内联 if
语句。
我会这样做。
1.首先在你的模型中定义一个方法,比如
public function checkColour()
{
if('value'<10)
{
return 'green quarter'
}
if('value'>10)
{
return 'yellow half'
}
}
基本上此方法会返回 class 个您已创建并希望用于特定条件的名称。
2. 然后我会像
'columns'=>array(
array(
'name'=>'nozare',
'cssClassExpression' => '$data->checkColour()'
),
),