CGridView 删除数据后怎么跳转到其他的动作去

CGridView 删除数据后有时候我想跳转到其他的动作去,而不是刷新数据。请问可以吗?

你可以自定义一个按钮,比如我要定义一个delete按钮


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'category-grid',

	'dataProvider'=>$model->search(),

	'columns'=>array(

		'id',

		'name',

		array(

			'class'=>'CButtonColumn',

			'buttons' => array(

				'delete'=>array(

		    		'label'=>'删除',

		    		'url'=>'array("category/delete","id"=>$data->id)',

		   			'imageUrl'=>Yii::app()->request->baseUrl.'/css/delete.gif',

				),

 			),

			'template'=>'{update} {delete}',

		),

	),

)); ?>

然后你在category/delete这个动作里执行完删除操作后转到你想要跳转的页面!

我这里的方法其实是不用ajax删除,如果有其它好方法也请你告诉我啊!

我是又想ajax又想删除后可以控制是否跳转。

那你是想局部跳转?如果整页面跳转的话,那用不用ajax是无所谓的,效果一样!

这样描述一下吧。应该会更清晰我的需求:

比如我有一个订单和订单明细。查看订单时可以同时查看订单的明细。如果订单为新增状态时是可以对明细进行操作的,包括删除操作。明细的显示利用的是 CGridView 来展示的。那么我在删除明细的时候,如果我有三条明细的数据,删除第一条的时候,刷新的是明细的 gridview 内容部分,但是我在删除第三条明细数据的时候,因为明细数据全部删除了,那么对应的订单已经无明细数据量,则我要同时删除明细对应的订单。这个时候,删除成功后,我要跳转到订单的展示页面,也就是 orders/index 的页面。

综上所叙,在删除明细的时候,我会根据一定的条件判断是刷新明细的 gridview 还是直接跳转到订单的 index 控制器。

当然,明细的展示不一定需要 gridview 来展示,直接写也是可以的,利用他只是更加方便一点而已。但目前遇到的问题是利用 gridview 的 delete 之后不能直接跳转到其他的控制器动作。

$this->widget(‘zii.widgets.grid.CGridView’, array(

       'afterAjaxUpdate'=&gt;&quot;


	function(id,data){


		var d=&#036;('#'+id)


		if(d.find('.empty').html() &#33;= null){


			window.location.href='index.php';


		}


	}&quot;,

给CGridView加个js参数就可以了,详细内容用firebug看下就明白了,我试过没问题的,跳转的时候,效果有点不好

我觉得在服务器端查询一下该订单下是否还有有效订单,然后用ajax返回,间断一下是否为0,然后跳转。在页面上用javascript判断节点内容感觉不太放心。

嗯。使用这个搞定。呵呵。非常感谢。

:rolleyes: 不错!学习了!

直接修改 delete的templet吧。不使用它的ajax,删除后redirect。