【问题标题】:Yii - CGridView rows / column values as link and calling ajax function on clickYii - CGridView 行/列值作为链接并在单击时调用 ajax 函数
【发布时间】:2013-12-09 06:40:35
【问题描述】:

在一个基于 YII 的项目中,我有一个 cgridview。要求是使整行或每列值成为链接,然后单击行中的任何链接将触发 ajax 调用。我从这里尝试过 How to display rows of CGridView as a link

但如果我将整行设置为可点击,则需要我查看操作。

如果我将一行中的单个列值作为链接并调用 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',
        ),

【问题讨论】:

    标签: php ajax yii


    【解决方案1】:

    经过一番麻烦后,我能够将 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',
        ),
    

    【讨论】:

      【解决方案2】:

      'options' 对于 cgridview 列是不可能的,如 yii 文档中所述: http://www.yiiframework.com/doc/api/1.1/CGridColumn#htmlOptions-detail

      如果你想设置选项,你必须使用'htmlOptions'。

      但是如果你想使用带有链接的 ajax,你必须使用 Chtml::ajaxLink() : http://www.yiiframework.com/doc/api/1.1/CHtml#ajaxLink-detail

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        • 2011-06-29
        • 2016-05-27
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        相关资源
        最近更新 更多