1

1 つのボタンで CGridView を作成し、ボタンに次のような JavaScript 関数を呼び出す必要があります。

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'projectCities',
    'summaryText' => '',
    'dataProvider' => $model->getCitiesProvider(),
    'columns' => array(
        'name',
        'directional',
        'customCount',
        array(
            'class'=>'CButtonColumn',
            'template'=>'{delete}',
            'buttons' => array(
                'delete' => array(
                    'url' => '',
                    'click' => '',
                    'options' => array(
                        'onclick' => 'removeCity(this, $data->idCity, 
                                      $model->idProject); return false;',
                    ),                          
                )
            ),
        )
    ),
    ));

もちろん、生成されたhtmlは次のとおりであるため、機能していません。

<a class="delete" title="Delete" onclick="removeCity(this, $data->idCity, $model->idProject); return false;">

JavaScript関数呼び出しに適切なIDがあるようにする方法はありますか?

4

3 に答える 3

2
//Controller:
public function gridButtons($model)
{   
    return array(
        'class'=>'CButtonColumn',
        'template'=>'{delete}',
        'buttons' => array(
            'delete' => array(
                'url' => '',
                'click' => '',
                'options' => array(
                    'onclick' => sprintf(
                        'js:removeCity(this, %d, %d);return false;',
                        $model->idCity, $model->idProject
                    ),
                ),                          
            )
        ),
    )
}
//view
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'projectCities',
    'summaryText' => '',
    'dataProvider' => $model->getCitiesProvider(),
    'columns' => array(
        'name',
        'directional',
        'customCount',
        array(            
            'value' => array($this, 'gridButtons'),            
        ),        
    ),
));
于 2013-03-25T12:50:16.040 に答える
0

私はこの問題に直面しており、これも解決しています。あなたの問題は、js関数が残っている「クリック」パラメータの後に「オプション」配列を閉じることになるかもしれません。しかし、「オプション」配列は、この方法の下の「クリック」パラメータの前に閉じます。 、これは問題を解決するのに役立つかもしれません。

$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'projectCities',
'summaryText' => '',
'dataProvider' => $model->getCitiesProvider(),
'columns' => array(
    'name',
    'directional',
    'customCount',
    array(
        'class'=>'CButtonColumn',
        'template'=>'{delete}',
        'buttons' => array(
            'delete' => array(                      
       'url'=>'$data->id',
       'visible'=>'true',
       'options'=>array('class'=>'viewbtns'),
       'click'=>'js: function(){ viewProfile((this).attr("href"),"openDialog" ); return false; }',

            )
        ),
    )
),
));
于 2013-03-28T21:18:25.473 に答える
0

二重引用符を使用して、文字列の変数置換を有効にすることができます。

'onclick' => "js:removeCity(this, {$data->idCity}, {$model->idProject}); return false;",
于 2013-03-25T15:38:26.537 に答える