items はツールバー上の項目のコレクションで、デフォルトのタイプはボタンです。ここでは 2 つの項目のみを使用します。「-」は区切り文字を表し、2 番目の項目はボタンです。各属性が何を表すかを見てみましょう:
ページング ツールバーとグリッドを組み合わせます。今回は、グリッドは ColumnModel を使用しませんが、同時に viewConfig を使用してユーザー インターフェイスを構成します。
///
/**//*
*著者: Daben
*日付: 2009-10-13
*バージョン: 1.0
*ブログ アドレス: http://yage.cnblogs.com
*/
Ext.BLANK_IMAGE_URL = '/extjs/resources/images/default/s.gif';
Ext.onReady( function() {
//ストア
var store = new Ext.data.JsonStore({
root: 'topics',
totalProperty: 'totalCount',
idProperty: 'threadid ',
remoteSort: true,
fields: [
'title', 'forumtitle', 'forumid', 'author',
{ name: 'replycount', type: 'int' } ,
{ 名前: 'lastpost', マッピング: 'lastpost', type: 'date', dateFormat: 'timestamp' },
'lastposter', 'excerpt'
],
//クロスドメインのため、同じドメイン内で ScriptTagProxy と HttpProxy を使用してください。
proxy: new Ext.data.ScriptTagProxy({
url: 'http://extjs.com/forum/topics-browse-remote. php'
})
});
store.setDefaultSort("lastpost", "DESC") //デフォルトのソート列と方向を設定します
//ページング関数を使用してツールバーを構築します
var pagingToolbar = new Ext.PagingToolbar({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: 'アイテム {0}-{1}、合計 {2 }items',
emptyMsg: "表示するトピックがありません",
items: [
'-', {
pressed: true,
enableToggle: true,
text: 'プレビュー',
cls: 'x-btn-text-icon の詳細',
toggleHandler: function(btn, pressed) {
var view = Grid.getView();
view.showPreview = pressed;
view.refresh();
}
}]
});
var Grid = new Ext.grid. ({
renderTo:"grid",
width: 700,
height: 500,
title: 'ページング機能付きグリッド',
store: ストア,
trackMouseOver : false ,
disableSelection: true,
loadMask: true,
// グリッド列
columns: [{
id: 'topic',
header: "topic",
dataIndex: 'title',
width: 420,
renderer: renderTopic,
sortable: true
}, {
header: "著者",
dataIndex: ' author',
width: 100、
hidden: true、
sortable: true
}、{
header: "replycount"、
dataIndex: 'replycount'、
width: 70 、
align: 'right'、
sortable: true
}、{
id: 'last'、
header: "最終返信"、
dataIndex: 'lastpost'、
width: 150,
renderer: renderLast,
sortable: true
}],
// カスタマイズされたユーザー インターフェイス
viewConfig: {
forceFit: true ,
EnableRowBody: true,
showPreview: true,
getRowClass: function(record, rowIndex, p, store) {
if (this.showPreview) {
p.body = '< ;p>' Record.data.excerpt '';
return 'x-grid3-row-expanded';
return 'x-grid3-row-collapsed'; 🎜>},
//上部のページング ツールバー
//tbar: pagingToolbar,
//下部のページング ツールバー
bbar: pagingToolbar
})
//データの読み込み
store.load({ params: { start: 0, limit: 25} });
// トピック列のレンダラー関数
function renderTopic(value, p, record) {
return String.format(
'
{0}{1} フォーラム a>'、
value,record.data.forumtitle,record.id,record.data.forumid);
}
//最後の返信列のレンダラー関数
function renderLast(value, p , r) {
return String.format('{0}
by {1}', value.dateFormat('M j, Y, g:i a'), r.data[' lastposter']) ;
}
})
これを実行して効果を確認します。図に示すように、データを取得するときにページがアニメーションで覆われていることがわかります。
データがロードされると、データはグリッド内でページ分割され、最後に公開された列によって降順に並べ替えられ、作成者列は非表示になります:
並べ替える列名をクリックすると、新しいデータがサーバーから再ロードされます。右矢印をクリックしてページをめくり、「プレビュー」ボタンをクリックして効果を確認します。今回のコードは最も単純なグリッドをはるかに超えていますが、効果もさらにクールです。コードを最初から整理してみましょう:
行 8 は画像プレースホルダーを使用しており、それが指す画像は空の画像です。 extjs ライブラリ ファイルでは、この画像のプレースホルダーは必要に応じて別の画像に置き換えられます。この例では、この行が削除されても、タイトル バーの「最後の返信」が「The」になることを除いて、影響はそれほど大きくありません。下の小さな矢印が消えます。この一行を書く習慣をつけましょう。
行 11 ~ 28 は Store クラスのオブジェクトを構築します。これについては特に言うことはありません。
行 30 は、lastpost 列をデフォルトの並べ替え列として設定し、「DESC」は大文字にする必要があり、昇順は「ASC」であることに注意してください。
行 33 ~ 51 は、前述したページングを備えたツールバーを構築します。
54行目から112行目は、ページング機能を備えたグリッドを構築します。
マウスを行の上に置いたときにその行が強調表示されないように指示します。
行 61 は、ユーザーがグリッドを選択できないことを示しています。
62 行目は、データをロードするときにページを覆うように指示しています。スクリーンショットで効果を確認できますが、ここで表示されているのはアニメーションです。データをロードするとマスキング効果は消えます。
行 94 ~ 105 では、各パラメータの意味を見てみましょう:
ForceFit: 水平スクロール バーが表示されないように列の幅を強制的に調整するかどうか。デフォルトは次のとおりです。間違い。
enableRowBody: true の場合、各行に tr 要素を追加してデータ行を展開できます。
showPreview: コードでプレビューを表示するかどうかを制御するために使用されるカスタム bool 型属性。
getRowClass: これは行の CSS スタイルを書き換えるために使用されるメソッドで、1 つ目は行データを表す Record オブジェクト、2 つ目は行のインデックス、3 つ目はenableRowBody です。 true の場合に渡される
パラメーターは、パラメーターの body 属性を通じて行データを展開するために使用できます。このメソッドは CSS クラス名を返す必要があります。この例では、記事の概要情報が showPreview の値に基づいて動的に表示されます。
111 行目では、ページング ツールバーをグリッドの下部に表示します。上部に表示したい場合は、bbar の代わりに tbar を使用できます。
115 行目は、データを取得するためにサーバーにリクエストを送信します。extjs は、params 内のパラメーターをポスト モードでサーバーに送信します。ここで、start は開始するデータの数を示し、limit は表示されるデータの量を示します。各ページ。
118 ~ 126 は 2 つのレンダラー関数で、使い方は前のシリーズで説明しました。
最後に指摘すべきことは、ページング機能は実際にはサーバー側で完了するということです。クライアント側でページをめくると、115行目のようにパラメータが送信されます。渡されたスターと制限値を元にサーバー側で返すべきデータを計算し、正しい形式でクライアントに送信する必要があります。 。サーバーがクライアントから渡されたパラメータを取得する方法と、クライアントにデータを送信する方法については、このシリーズの最初のセクションを参照してください。