내 사이트의 색인 페이지에 CGridView가있는 div- 블록이 떠있었습니다.Yii CGridView가 AJAX 대신 새 페이지를 렌더링합니다.
정렬, 필터, 페이징 등의 옵션을 사용해야하지만 div 만 업데이트하면 전체 페이지가 새로 고쳐지지 않습니다.
데이터 렌더링은 그리드 내용 만 업데이트해야합니다. 모든 <a>
의 href가있어 사용자를 지정된보기로 보냅니다. 여기
$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.usersGrid.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();>?"무엇을 의미합니까 그래서 당신을 확실히 도움이 될 수 없습니다 ... – webeno
Ajax 요청 자체를 가지고 있지만, 그것은' actionUsersGrid();를 호출하는 대신 나에게 보인다. ?>'users.php'에'renderPartial ('usersGrid'... ')를 넣고'ajaxUrl'과 완전히 다른 이름을 지정해야합니다. 예를 들어'ajaxCall'과 같이 컨트롤러에서 제거하면됩니다. 'actionUsersGrid'라는 이름으로'actionAjaxCall' (물론'ajaxUrl'의 이름에 따라 다름)을 설정하고 거기에 아약스 액션을 설정하십시오. – webeno
그게 gridview가 놓이는 users.php의 줄입니다. :'some_text