2017-03-08 37 views
1

jsonデータを持つ "Bootgrid"グリッドがあります(ajaxを使用していません)。Jquery Bootgrid - 現在のページをプログラム的に変更します

ページ分割ボタンは正常に機能しますが、現在のページをプログラムで変更したいと考えています。

$( "#grid")のようなもの。bootgrid()。setCurrentPage(100);

私はそれを達成するための方法を提供するAPIが表示されません。

答えて

2

ご覧のとおり、bootgridには、現在のページを変更するための組み込みの方法はありません。あなたはそれを拡張することができます。

あなたのページにロードしているいくつかの.jsファイルにこれを追加:あなたは


bootgridと負荷データを構築するために使用するのと同じ .jsに貼り付けることができ

$.fn.bootgrid.Constructor.prototype.setCurrentPage = function (page) { 
    $(this).find('li.page-' + this.current).removeClass('active'); 
    $(this).find('li.page-' + page).addClass('active'); 
    this.current = page; 
    return this; 
} 

グリッドで使用すると、次のようになります。

// create the grid... 
var grid = $("#grid-data").bootgrid({ 
    ajax: false 
}); 

// add some rows with json data 
grid.bootgrid('append', 
[ 
    { 
     "id": 19, 
     "sender": "[email protected]", 
     "received": "2014-05-30T22:15:00" 
    }, 
    { 
     "id": 14, 
     "sender": "[email protected]", 
     "received": "2014-05-30T20:15:00" 
    }, 
    // ....many rows 
]); 

// call your custom method, to change to page 3 
grid.bootgrid('setCurrentPage', 3); 
// calling sort is just a workaround, so bootgrid reloads itself... 
grid.bootgrid('sort'); 

だから基本的に、私は(ちょうどスタイリングの目的のために)activeボタンを変更し、bootgridのcurrentプロパティを変更しますそのプロトタイプに新しいメソッドを追加します。

ページ番号を変更した後、我々はreloadと同じように、ページ番号をリセットせずにそのデータ、をリロードする力bootgridの回避策としてsortメソッドを呼び出します。


チェックthis JSFiddleを作成しました。それを試してみてください!!

+1

ありがとうございます!私はこのソリューションが本当に好きです。私は最終的にload()コピーであるshowPage()メソッドを組み込むようにbootgrid.jsを変更しましたが、現在の行を指定されたものに設定しました – Rombus

+0

ああ、これは良い選択ですが、あなたがそれを小型化して交換するか、またはミニバージョンを使用しない限り、ミニバージョンは機能しません。別の機能についての別の答えでは、 'bootgrid.js'の内部に' Grid.prototype.doSomething = function() 'のようなことを提案しました。私は彼らが新しいバージョンをリリースするつもりはないと思うので、あなたはパッケージを更新したり、このコードをもう一度追加するのを忘れるかもしれません。 – Alisson

関連する問題