在一个基于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-详细
我希望它能帮助你