2

我正在尝试使用数组中的值设置 htmlOptions,该数组用作 CGridView 组件的 DataProvider(它是 CArrayDataProvider)。其中有一个标志,可以是 0 或 1(0 表示字体粗细:正常,1 表示粗体)

'htmlOptions'=>array('style'=>'$data["flag"] == 1 ? font-weight: bold; : font-weight: normal;'),

它不起作用,所以我尝试直接在 DataProvider 中设置样式(返回字体粗细:粗体;或字体粗细:正常;):

'htmlOptions'=>array('style'=>'$data["style"]'),

但输出是:

<td style="$data["style]">Value</td>

我究竟做错了什么?

4

3 回答 3

4

您不能$datahtmlOptions. 您必须扩展CDataColumn.

有关如何执行此操作的信息,请参阅本文。

于 2012-05-08T17:59:51.683 回答
3

Yii v1.1.13 现在在 CGridView 中内置了这个功能: http ://www.yiiframework.com/doc/api/1.1/CGridView#rowHtmlOptionsExpression-detail

您可以使用 $data 作为模型,使用 $row 作为行号来评估字符串中的 htmlOptions 数组。由于语法有点奇怪,我将展示一个示例:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $dataProvider,
    'columns' => array(       
        'columns' => array(     
            array(
               'name'=>'Column Name 1',
               "value"=>'$data->colVal',
            ),                      
               'name'=>'Column Name 2',
               "value"=>'$data->colExpression()',
            ),
            "modelAttributeUsingNameLabel",
        ),
     "rowHtmlOptionsExpression"=>'array(
                          "onclick"=>
                             "window.location = \'.$this->url.\'"
                  )')
 );

请注意,htmlOptions 的 php 数组位于字符串中。这很奇怪,但它就是这样工作的!

于 2013-04-02T21:47:50.890 回答
1

htmlOptions 无权访问 $data。所以你可以试试这个

'value' => '($data["flag"] == 1 ? "<b>$data->your_value</b> ":"$data->your_value")',
于 2015-02-02T18:20:14.220 回答