kintoneUIComponentを使ってテーブルを作成しています。
テーブルのセル数は条件によって動的に変わるため以下のようにしてセルを追加しています。
for(var i = 0; i < xxxx.length; i++){
var yyyyyy = {};
yyyyyy .header = xxxx[i];
yyyyyy .cell = function() {kintoneUIComponent.createTableCell(‘text’,‘membser’)};
tableColmns.push(yyyyyy );
}
var initData = [
{ abc:{text:“--------”},
xyz:{text:“-------”},
member_0:{text:‘10’}, //追加セル
member_1:{text:‘20’}, //追加セルが2つとなるパターンで実施しているため2件追加
}
];
const directTable = new kintoneUIComponent.Table({
data: initData,
columns: tableColmns,
actionButtonsShown:false
});
kintone.app.record.getSpaceElement(‘directTable’).appendChild(directTable.render());
上記の方法で一応動的にセルを増やすことはできました。
しかし、dataFieldNameが固定されているので、テーブルデータを設定した場合、すべての
セルに同じ値が設定されてしまいます。
そこでdataFieldNameを動的に設定しようとしましたが、以下の方法ではdataFeildNameを動的に設定することができませんでした。
(1) yyyyyy .cell = function() {kintoneUIComponent.createTableCell(‘text’,‘member_’+i)};
設定直後にconsole.logにてyyyyyy .cellを参照するとdataFieldNameの部分は’member_'+iのままとなっていました。
(2)同様に
var memberid = ‘member_’+i;
yyyyyy .cell = function() {kintoneUIComponent.createTableCell(‘text’,memberid )};
とした場合も(1)と同様 dataFieldNameの部分はmemberidとなっていました
これで実行した場合エラーにはなりませんでしたが、テーブルにセットされた値は
member_0/member_1のdataFieldNameの両方にinitDataで設定したmember_1のvalueである
20が設定されていました。
※dataFieldNameが実際どういった値に展開されたのかは不明ですがmember_1の値が追加
されたセルに設定されているのは??です
(3)memberidに対して推奨されないのはわかっていますが、eval()をやってみましたが、
yyyyyy .cell = function() {kintoneUIComponent.createTableCell(‘text’,eval(memberid ))};
テーブルのrender()実行時に以下のエラーとなりました。
「Uncaught ReferenceError: member_1 is not defined at eval (eval at member.cell (download.do?..)
(4)kintoneUIComponent.createTableCell()の部分を文字列として設定し、この部分をeval()
(5)function() {return kintoneUIComponent.createTableCell()}を文字列設定し、eval()
などやってみましたが動的にdataFieldNameを設定することができませんでした。
dataFieldNameの値を動的に設定する方法はないでしょうか?
よろしくお願いします