回答ありがとうございます。わかりずらくて申し訳ありません。
ソースは、Handsontableを使ってkintoneをExcelライクに入力しよう その1を利用して
作成しています。
アクティブなレコードとは、グリッド状には100行のレコードが表示されているので
そのうちのどれか?を選択した行のことです。
Contextmenuの場合では、
contextMenu: {
callback: function(key, cell, e) {
console.log(cell.start.row, cell.start.col);
console.log(event.records[cell.start.row].$id.value);
の部分で表示されている該当の行番号が取得できましたのでその行番号から、レコードIDを
取得することはできました。(ページを切り替えるとMenuが無限増殖してしまいますが・・・)
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
の場合、ボタンを押下した場合にどの行がアクティブ(選択)した状態なのかを
判別する方法がよくわかっていません。
また、レコード行数にボタンを配置しようとし、
columns: [
{data: “レコード番号.value”, editor: false},の部分に直接URLを書き込んで、カスタムHTMLを
表示させようとしたのですが、NULL状態になってしまいます。
この場合、data: records,のdataの状態でHTMLのデータを格納しておく必要があるのでしょうか?
わかりずらい質問で申し訳ないですが、回答のほどよろしくお願いします。
(function() {
“use strict”;
kintone.events.on([‘app.record.index.show’], function(event) {
// ビューIDを指定する(指定したビューID以外は処理しない)
if (event.viewId !== 5118472) return; //カスタムビュー番号
var records = event.records;
// カスタマイズビュー設定時に登録したHTMLの要素を指定します。
var container = document.getElementById(‘sheet’);
container.innerHTML=‘’; //HTML要素のクリア
// 一覧表示時に編集用ボタンを配置
if (document.getElementById(‘my_index_button’) == null) {
var myIndexButton = document.createElement(‘button’);
myIndexButton.id = ‘my_index_button’;
myIndexButton.innerHTML = ‘詳細画面’;
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
}
// Handsontableをインスタンス化
var hot = new Handsontable(container, {
// kintoneのレコードデータを指定
data: records,
minSpareRows: 0,
maxRows: 5,
// カラムのヘッダーを指定
colHeaders: [“番号”,“工事番号”, “工事件名”, “業務内容”, “備考”, “所在”, “受注日”, “状態”, “完了日”],
contextMenu: {
callback: function(key, cell, e) {
console.log(cell.start.row, cell.start.col);
console.log(event.records[cell.start.row].$id.value);
},
items: {
‘RecordShow’: {name: ‘詳細画面’},
}
},
// dataオプションのどの列を表示するか指定する。
columns: [
{data: “レコード番号.value”, editor: false},
{data: “KOUJINO.value”, editor: false},
{data: “KOUJIKENMEI.value”, editor: false},
{data: “業務内容.value”, editor: false},
{data: “備考.value”, editor: false},
{data: “Address.value”, editor: false},
{data: “受注日.value”, editor: false},
{data: “処理状態.value”, editor: false},
{data: “完了日付.value”, editor: false}
],
fillHandle: false,
columnSorting: true,
sortIndicator: true,
stretchH: ‘all’,
manualColumnResize: true,
});
ボタン押下時の処理
myIndexButton.onclick = function() {
window.confirm(event.records[2].$id.value);
};
});
})();