2017-03-24 1 views
0

저는 Yii2를 사용하여 웹 기반 응용 프로그램을 작성하고 있습니다. 나는 Yii2의 GridView를 사용했고 일련의 버튼을 사용하는 부트 스트랩의 기본 페이지 매김 대신 페이지 매김을위한 드롭 다운을 사용하고 싶습니다. 내 GridView는 Pjax로 래핑됩니다.jQuery를 사용하여 Yii2 ActiveDataProvider의 페이지를 동적으로 설정하는 방법

<div class="custom-pagination"> 
    Page <?=Html::dropDownList('myPagination', '1', $pageOptions);?> Of <?=$pageCount;?> 
</div> 

//******** 
my gridview which is wrapped by pjax 
//******** 

<script type="text/javascript"> 
var base = "<?=Yii::$app->request->getAbsoluteUrl();?>"; 
$(".custom-pagination select").on('change', function(e){ 
    $.get(base, {'page': $(this).val()}, function(data) { 
     $.pjax.reload({container:'#kv-grid-demo-pjax', url: base}); 
    }); 
}); 
</script> 

서버 측 : 이것은 내 현재 코드입니다

public function actionIndex() 
{ 
    $searchModel = new RotaryInputSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    $pageCount = ceil($dataProvider->getTotalCount()/$dataProvider->getPagination()->getPageSize()); 
    $pageOptions = array(); 
    for($i=1; $i<=$pageCount; $i++) { 
     $pageOptions[$i] = $i; 
    } 

    if (isset($_GET['page'])) { 
     $dataProvider->pagination->page = $_GET['page']; 
     echo json_encode('success'); 
     die(); 
    } 

    return $this->render('index', [ 
     'dataProvider' => $dataProvider, 
     'searchModel' => $searchModel, 
     'pageCount' => $pageCount, 
     'pageOptions' => $pageOptions, 
    ]); 
} 

pjax의 작업 그리드가 다시로드되지만 다른 페이지로 전환되지 않고 페이지 내가 가진 1에 남아 이걸 내가 어떻게해야할지 모르겠다. 도와주세요 ... 코드에 따라

+0

잘 동작과 JS이이 내가 내 컨트롤러에있는 모든 당신의 문제 –

+0

을 이해하는 것만으로는 충분하지 않습니다, js 및보기. 다른 부분을 알고 싶습니까? –

+0

jquery get 메쏘드에서 변수'base '의 값은 무엇입니까 –

답변

0

것 당신 PLS는 조금 더 많은 HTML을 제공 할 수 있습니다

$(".custom-pagination select").on('change', function(e){ 
    $.pjax.reload({container:'#kv-grid-demo-pjax', url: base+'?page='+$(this).val()}); 
}); 
+0

죄송합니다. 댓글이 너무 길어서 여기에 더 많은 댓글을 달아 드리겠습니다. 그것은 훌륭하게 작동하지만 불행히도 그리드 필터를 완전히 제거합니다. "그리드 필터 안의 div에로드"란 무엇을 의미합니까? –