【发布时间】:2014-07-16 10:03:19
【问题描述】:
在我网站的索引页面中,我有浮动的 div 块,里面有 CGridView。
我需要使用排序、过滤、分页等选项,但只能通过更新这个唯一的 div 而不是刷新整个页面。
按应有的方式呈现数据,我只能更新网格内容 - 所有<a> 都有 href,将用户发送到指定视图。
这是网格的视图:(这是我的 views.users.usersGrid.php 的唯一内容)
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->search(),
'filter' => $model,
'ajaxUrl' => 'modules/subcntrl/usersGrid',
'ajaxUpdate' => 'users-grid',
'columns' => array(
array(
'name' => 'name',
'type' => 'raw',
'value' => 'CHtml::encode($data->name)'
),
array(
'class'=>'CButtonColumn',
),
),
));
从views.users.users.php调用:<?php $this->actionUsersGrid(); ?>
控制器:
public function actionUsers() {
$this->renderPartial('users');
}
public function actionUsersGrid() {
if(!Yii::app()->request->isAjaxRequest) die('Url should be requested via ajax only');
$model = new Users();
$this->renderPartial('usersGrid',array(
'model' => $model,
));
}
不胜感激
【问题讨论】:
-
“它是从views.users.users.php中调用的:actionUsersGrid(); ?>”是什么意思
-
...所以不确定我是否可以帮助您处理 Ajax 请求本身,但在我看来,您不必在
users.php上调用<?php $this->actionUsersGrid(); ?>,而是必须将renderPartial('usersGrid'...放在那里并将您的ajaxUrl命名为完全不同的名称,例如。ajaxCall,然后在控制器中,去掉actionUsersGrid,将其命名为actionAjaxCall(当然,取决于你如何命名ajaxUrl),然后在那里设置你的ajax操作...... -
这是 users.php 中放置 gridview 的行。像这样:
some_text <div id="users-grid"><?php $this->actionUsersGrid(); ?></div> -
我刚刚编辑了我的评论......基本上你叫错了......我只将它添加为评论的原因是因为我无法帮助你ajax 调用,但是视图的设置方式肯定不正确...
-
代码经过一些尝试和我在此发现的 tuts 进行了一些更改以使其工作。我之前在一个文件中拥有 users 和 usersGrid,是通过
renderPratial('usersGrid',array('model'=>$model))构建的,所以没有这个调用,但它的工作方式与现在相同。好的,谢谢,我会根据您的评论尝试更改这部分,并让您知道