Yii-CGrid将行/列值作为链接查看,并在单击时调用ajax函数


Yii - CGridView rows / column values as link and calling ajax function on click

在一个基于YII的项目中,我有一个cgridview。要求是使整行或每列的值都成为一个链接,单击行中的任何链接都会触发ajax调用。我已经试过了如何将CGridView的行显示为链接

但问题是,如果我让整排都可以点击,我需要查看动作。

如果我在一行中创建单独的列值作为链接并调用ajax函数,我会得到以下错误。

Property "CDataColumn.options" is not defined. 

我需要帮助使整行成为可点击的,并在点击时调用ajax函数或单个行值来调用ajax函数。

我们非常感谢在正确方向上提供的任何帮助或指导。

//code for making trading name column in cgridview as clickable and call ajax
<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'customer-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'id',
        array(
                    'name'  => 'trading_name',
                    'value' => 'CHtml::link($data->trading_name, Yii::app()
                     ->createUrl("customer/view/",array("id"=>$data->primaryKey)))',
                     'type'  => 'raw',
                     'options' => array('ajax' => array('type' => 'get', 'url'=>'js:$(this).attr("href")',
                     'success' => 'js:function(data) { 
                      $("#tab1").html(data);')
                      ),
                 ),
        'email',    
        'site_code',
        array(
            'class'=>'CButtonColumn',
        ),

经过一些麻烦之后,我能够将cgridview的行设置为链接,并在单击每一行时调用AJAX函数。下面是代码。也许这对某人有帮助。

selectionChanged做到了。单击任意行时,调用ajax函数并显示每个客户的信息都在网格下方的div中。

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'customer-grid',
'dataProvider'=>$model->search(),
'selectionChanged'=>'js:function(id){
 n = $.fn.yiiGridView.getSelection(id);
 if (n>0){
    $.ajax({
            url: "'.Yii::app()->urlManager->createUrl('customer/view/').'",
            type: "GET",
            data: {"id": parseInt(n)},
            dataType: "html",
            success: function(data) {
            $("#customer-div").html(data);
         }
         });',
    'filter'=>$model,
    'columns'=>array(
    'id',
    array(
                'name'  => 'trading_name',
                'value' => 'CHtml::link($data->trading_name, Yii::app()
                 ->createUrl("customer/view/",array("id"=>$data->primaryKey)))',
                 'type'  => 'raw',
                 'options' => array('ajax' => array('type' => 'get', 'url'=>'js:$(this).attr("href")',
                 'success' => 'js:function(data) { 
                  $("#tab1").html(data);')
                  ),
             ),
    'email',    
    'site_code',
    array(
        'class'=>'CButtonColumn',
    ),

如yii文档中所述,cgridview列不可能使用"选项":http://www.yiiframework.com/doc/api/1.1/CGridColumn#htmlOptions-详细

如果要设置选项,则必须使用"htmlOptions"。

但是,如果您想将ajax与链接一起使用,则必须使用Chtml::ajaxLink():http://www.yiiframework.com/doc/api/1.1/CHtml#ajaxLink-详细

我希望它能帮助你