【kintone】テーブルの行を並び替える(ソートする)
前回は、テーブルの値を変更する記事を書きましたが、
今回は簡単にできるテーブルの昇順並び替え機能を作ってみたいと思います。
昇順や降順に並び替えることを「ソート」と言いますので、
「ソート」という言葉を使って説明したいと思います💪
※昇順は1,2,3,・・・のような小さい順、降順は100,99,98,・・・のような大きい順の並び方です
アプリの準備
アプリのフィールド
フィールド種類 | フィールド名 | フィールドコード |
---|---|---|
スペース | spbtn | |
テーブル | 名簿 | 名簿 |
テーブルのフィールド
フィールド種類 | フィールド名 | フィールドコード |
---|---|---|
数値 | 行番号 | 行番号 |
文字列(1行) | 名前 | 名前 |
その他お好みで・・・ |
JavaScriptを書く
編集画面のイベントにします。
ボタンをつけて、ボタンをクリックすると「行番号」順に並べ替える機能とします。
解説は後述します。
//編集画面開いたときは'app.record.edit.show'
kintone.events.on(['app.record.edit.show'], event => {
//ボタンを置きたいスペースフィールドの情報を取ってくる
const sp = kintone.app.record.getSpaceElement('spbtn');
//ボタンを作る
const btn = document.createElement('button');
//ボタンに表示したいテキスト
btn.textContent='ボタン';
//スペースフィールドにボタンを追加する
sp.appendChild(btn);
//ボタンをクリックしたときの動作
btn.onclick=()=>{
const obj = kintone.app.record.get();
// 行番号順にソートする(行番号昇順に並び替える)
obj.record.名簿.value.sort((a, b) => {
//aの方の行番号が小さい時、a が先にくるようにする
if (Number(a.value.行番号.value) < Number(b.value.行番号.value)) return -1;
//aの方の行番号が大きい時、b が先にくるようにする
if (Number(a.value.行番号.value) > Number(b.value.行番号.value)) return 1;
return 0;
});
kintone.app.record.set(obj);
}
return event;
});
ボタンをつける
ボタンを追加する方法についてはこちらをご覧ください
→【kintone】アプリの「スペース」フィールドにボタンを設置する
サブテーブルを並び替える
「行番号」を元にソート(並び替える)機能です。
// 行番号昇順にソートする(行番号の小さい順に並び替える)
obj.record.名簿.value.sort((a, b) => {
//aの方の行番号が小さい時、a が先にくるようにする
if (Number(a.value.行番号.value) < Number(b.value.行番号.value)) return -1;
//aの方の行番号が大きい時、b が先にくるようにする
if (Number(a.value.行番号.value) > Number(b.value.行番号.value)) return 1;
return 0;
});
obj.record.名簿.value
は名簿テーブルの行が格納されている配列です。
※obj.record.名簿.value[0]
で1行目です。
配列をなにかのキーを元にソートする時は sort()
メソッドを使います。
詳しくはこちらの「解説」のところに使い方が分かりやすく書かれています。
Array.prototype.sort()
※Number()
は文字列を数値に変換する関数です。
ちなみに、降順ソートしたい場合はこのように書き換えます。
//aの方の行番号が大きい時、a が先にくるようにする
if (Number(a.value.行番号.value) > Number(b.value.行番号.value)) return -1;
//aの方の行番号が小さい時、b が先にくるようにする
if (Number(a.value.行番号.value) < Number(b.value.行番号.value)) return 1;
return 負の数;
のときは a, b
という順番になり、
return 正の数;
のときは b, a
という順番になります。
動かしてみる
実際に動かしてみるとこのようになります。
※年齢フィールドを追加してみました。
まとめ
今回のTipsを使うと、テーブルの行を思い通りの順番に並べ替えたい時に使えるかも!?
テーブルの行は「配列」として扱うことができます。
こちらのメソッドたちも使えますので、是非研究してみてくださいね^0^
参考:JavaScriptリファレンス:Array
Author And Source
この問題について(【kintone】テーブルの行を並び替える(ソートする)), 我々は、より多くの情報をここで見つけました https://qiita.com/juri_don/items/8bb4df7c81bb0d35f44a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .