2017-03-24 22 views
0

Yii2を使用してWebベースのアプリケーションを構築しています。私はYii2のGridViewを使い、一連のボタンを使ったブートストラップのデフォルトページネーションの代わりにページネーションのドロップダウンを使いたいと思っています。私のGridViewはPjaxでラップされています。サーバー側ではYii2 ActiveDataProviderのページをjqueryで動的に設定する方法

<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にロードする"とはどういう意味ですか? –

関連する問題