2012-05-08 6 views
1

CGridViewコンポーネント(これはCArrayDataProvider)のDataProviderとして使用される配列の値を使用してhtmlOptionsを設定しようとしています。それになりますフラグがあるのいずれか(フォントウェイトのための0:太字のため、通常、1)0または1CGridViewのhtmlOptionsに式を追加する

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

それは動作しませんでしたので、私はdataProviderの直接スタイルを設定しようとしました(フォントの太さを返す:太字;フォントウェイトを:ノーマル;):

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

しかし、出力は次のようになります。

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

私が間違って何をしているのですか?

答えて

2

htmlOptions$dataまたは$ rowを使用することはできません。 CDataColumnを延長する必要があります。

詳細は、this articleを参照してください。

+0

これを試すことができますが私をたくさん助けたが、何であれば、私はいくつかの固定されたスタイルに加えて、いくつかの動のを設定したかったです。私はいくつかの文字列を連結しようとしましたが、動作しませんでした。 – Elathan

3

のYii v1.1.13今CGridViewに組み込まれて、この機能を持っています http://www.yiiframework.com/doc/api/1.1/CGridView#rowHtmlOptionsExpression-detail

あなたは、文字列からhtmlOptions配列を評価するために、行番号のためのモデルと$行の$のデータを使用することができます。 htmlOptionsのためのPHPの配列が文字列であることを

$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.\'" 
       )') 
); 

お知らせ:構文は少し奇妙ですので、私は例を紹介します。それは奇妙ですが、それはどのように動作します!

+0

非常に便利で使いやすい – tinybyte

0

htmlOptionsには$ dataへのアクセス権がありません。 ですから、この

'value' => '($data["flag"] == 1 ? "<b>$data->your_value</b> ":"$data->your_value")', 
関連する問題