バックグラウンド
次のように定義および設定されたオブジェクト (ユーザー) の配列があります。
// object definition
function Users()
{
this.Id = null;
this.Name = null;
this.FirstName = null;
this.LastName = null;
this.IsActive = null;
this.Title = null;
this.index = null;
this.selected = null;
}
// object array
var AllUsers = [];
// ...
// an ajax call retrieves the Users and adds them to the AllUsers array
// ...
インデックス値は、取得された順序で各ユーザーに設定されます。ユーザーが取得されると、それらを 1 つずつ選択し、リストからページ上のテーブルに移動できます。選択するselected
と、配列内の選択されたオブジェクトのプロパティが true に設定されます。
選択したすべてのユーザーを返すために grep を使用しています。
var SelectedUsers = $.grep(AllUsers,function(obj){
return obj["selected"] == true;
});
返されるデータの例を次に示します。
[
Object {
Id="00540000001AbCdEFG",
Name="First Last1",
FirstName="First",
LastName="Last1",
Title="Title",
index=56,
selected=true
},
Object {
Id="00540000001AbChIJK",
Name="First Last2",
FirstName="First",
LastName="Last2",
Title="Title",
index=12,
selected=true
},
Object {
Id="00540000001AbClMNO",
Name="First Last3",
FirstName="First",
LastName="Last3",
Title="Title",
index=92,
selected=true
}
]
質問
データをページングできるようにしたいのですが、そのためには、選択した次および前のユーザーをインデックスで取得できる必要があります。どうやってやるの?
たとえば、テーブルで最初に選択したユーザー (インデックス = 56) を開いた場合、次のインデックス (インデックス = 92 の 3 番目に選択したユーザー) を持つユーザーを取得するにはどうすればよいですか?