【kViewer】レコード番号の取得について

kViewerのレコード一覧画面において、一覧に表示されている特定の項目を操作したいです。

kv.index.getElementByCode(recordId, code) 関数

を使用したいと思っていますが、レコードIDが必要なため、ページ内に表示されている各レコードのレコードIDをすべて取得したいです。

どのようなロジックで実現するのが良いでしょうか。

ご教示ください。

gonさん

こんにちは。

 

kv.events.records.fetchedイベントで、一覧画面のレコード取得API正常終了後の処理を定義できます。

ここで取得されたstate.recordsをループすれば、各レコード情報に対して処理できます。

(function() {
'use strict';
kv.events.records.fetched = [function(state) {
state.records.forEach(function(record) {
console.log(record.$id.value);
});
return state;
}];
})();

koichiさん

ご回答いただきありがとうございます。
kv.events.records.fetchedでレスポンスの内容を受け取れるということで試してみたところ、

レコード番号を取得することができました。
大変助かりました。ありがとうございました。

gonさん

私も同じところでつまずいています。
レコード番号取得のサンプルコードを載せていただけますでしょうか。
宜しくお願い致します。

foopiiさん

 

私が最初の回答いれているのでフォローしますと、上記にあるコードでレコード番号は取得できます。

foreach内の「record.$id.value」がレコード番号です。

 

ご不明点ございましたらコメントください。

koichi様

ありがとうございます!できました!

ループ処理をどうやって書けばいいか迷っていましたが、
一応、同じように迷っている誰かがみるかもしれないので、こちらにサンプルとして
記載しておきます。

      for (var i = 0; i < cnt1.length; i++) {
        for (var j = 0; j < cnt2.length; j++) {

             var cnt3 = state.records[i][‘S’ + cnt2[j]].value;

             if (cnt3 < -1) {
               kv.index.getElementByCode(state.records[i].$id.value,‘K’ + cnt2[j]).style.background = ‘#FF88FF’;
             }else if (cnt3 < 0) {
               kv.index.getElementByCode(state.records[i].$id.value,‘K’ + cnt2[j]).style.background = ‘#FFDDFF’;
             }else if (cnt3 > 1) {
               kv.index.getElementByCode(state.records[i].$id.value,‘K’ + cnt2[j]).style.background = ‘#77FFFF’;
             }else if (cnt3 > 0) {
               kv.index.getElementByCode(state.records[i].$id.value,‘K’ + cnt2[j]).style.background = ‘#CCFFFF’;
             }
        }
      }

foopiiさん

お返事が遅くなりました。ループ処理ですが、私の場合以下のように実現しました。

参考にして頂ければと思います。

  var record_number = [];
  var record_count = 0;

  state.records.forEach(function(record) {
     record_number[record_count] = record.$id.value;
     record_count++;
   });

gon様

ループ処理の実例ありがとうございます。

すっきりしてて、こちらの方がいいですね!

ありがとうございました!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。