2014-05-13 4 views
0

CJuiDialog 내부에서 CGridView를 렌더링하고 있는데 문제가 없습니다.CJuiDialog 내에서 렌더링 된 Yii CGridView는 필터링되거나 정렬되지 않습니다.

내 문제는, 레코드를 정렬하기 위해 열 머리글을 클릭 할 때마다 페이지가 변경됩니다 (url은 renderPartial에서 렌더링 된 뷰의 URL이며 아약스가 아님). 컨트롤러 안의 Yii::app()->request->isAjaxRequest은 false입니다.).

또한 필드를 필터링하면 아무 일도 발생하지 않습니다.

사용자가 CGridView를 정렬하거나 필터링하도록하려면 어떻게해야합니까?

또는 사용자가 CGridView를 통해 외래 키 필드를 선택할 수있게하는 또 다른 방법이 있습니까?

답변

0

마지막으로 해결책을 찾았습니다.

renderPartial을 호출 할 때 세 번째 매개 변수 = FALSE 및 네 번째 매개 변수 = TRUE로 설정해야합니다. 공식 문서에서

$this->renderPartial('ajax_view',array(
      'model'=>$model, 
      'dataProvider'=>$dataProvider, 
      ),false,TRUE); 

는 :

$는 렌더링 결과가 아닌 사용자 $ processOutput부울 렌더링 결과가할지 여부를 최종 표시되는 반환해야하는지 여부를부울 반환 processOutput을 사용하여 후 처리 할 수 ​​있습니다.

가장 중요한 TWEAK

: renderPartial로 렌더링 내부보기 당신은 추가해야합니다

Yii::app()->clientscript->scriptMap['jquery.js'] = false; 

페이지는 단순히 '원인 JQuery와로드 된 여러 번 다시로드됩니다.

0

자바 스크립트 오류 또는 코드의 클릭 기능이 무시되고 false를 반환하지 않기 때문에이 문제가 발생했을 수 있습니다. 코드를 보여줄 수 있습니까?

+0

그물을 통해 해결책을 찾아 자바 스크립트 오류가 없습니다, 나는 열 머리글을 클릭하면 표준 CGridView에서도 페이지가 다시로드된다는 것을 알았지 만 (사용자는 그것을 알아 채지 못함). 하지만 그게 내 문제 야, 그 페이지 로딩을 막아야 해. – dgtal

+0

전에이 정보를 본 적이 없다. 열 머리글을 클릭하면 아약스가 호출되고 절대로 페이지가 다시로드되지 않습니다. 이것이 false를 반환하지 않는 경우에만 발생할 수 있으며 기본적으로 실제로 수행됩니다. [link] (http://www.yiiframework.com/demos/blog/index.php/post/admin) – VSchettino