3.2.2. TMTable¶
前項のGadgetではガジェットの仕様を解説しました。本項では、ガジェットの内包要素であるTMTableの仕様を解説します。
3.2.2.2. TMTableのプログラミング¶
TMTableは、タグライブラリのTMTable <k:tmtable>を使用します。TMTable <k:tmtable>は、<table>に変換されますので、基本的なプログラミング方法は<table>と同様ですが、<thead>と<tbody>を明確に分けて作成してください。
プログラミング例<k:tmtable id="sampleTmtable" class="imui-form"> <thead> <tr> <th><k:surface surfaceKey="入力欄1" requiredMark="true"/></th> </tr> <tr> <th><k:surface surfaceKey="入力欄2" requiredMark="true"/></th> </tr> </thead> <tbody> <tr> <td><k:text name="inputArea1" mode="0"/></td> </tr> <tr> <td><k:text name="inputArea2" mode="0"/></td> </tr> </tbody> </k:tmtable> 解説<thead>ヘッダ行として扱われますので、特に何も変化しません。<tbody>動的に増減する対象で、複数行(<tr>が複数)あってもそれが1セットの行として増減します。たとえば、プログラミング例の様にJSPにてあらかじめ2行(2つの<tr>)を作成しておくと、この2行単位で動的に増減されます。
3.2.2.3. タプルとは?¶
タプル、またはタプルIDは次の様に定義しています。
タプル前項の通り、<tbody>にあらかじめ<tr>2つある場合は、この2行単位で動的に増減していきます。TMTableでは、この2行の単位をタプルと定義しています。 タプルIDタプルIDは、タプルに対して付与される一意な連番です。タプル削除がされると欠番が発生しますし、「上に挿入」などを行った場合には画面表示順とタプルIDの順序は一致しません。TMTableの操作は、このタプルIDを利用して操作します。
3.2.2.4. タプル操作のプログラミング¶
JavaScriptにてタプル操作を行う場合のプログラミング方法を解説します。次の様な実装で、タプルに対する各種操作が行えます。
最下行に追加// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; // 最下行に1行(1タプル)追加 tmtable.append(); 下に挿入// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; // 指定したタプルIDの下にタプルを挿入 tmtable.insertUnder("タプルID"); 上に挿入// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; // 指定したタプルIDの上にタプルを挿入 tmtable.insertUpper("タプルID"); タプルを1つ削除// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; // 指定したタプルを削除 tmtable.del("タプルID"); タプルをすべて削除// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; // タプルをすべて削除 tmtable.deleteAll();コラム
タプル操作の詳細は、『intra-mart Accel Kaiden! JsDoc』を参照してください。
3.2.2.5. TMTable操作パネル¶
ユーザ操作で行追加や行削除などを行う場合はTMTable操作パネル <k:tmtableOperationPanel>を使用してください。次の様にTMTable操作パネル <k:tmtableOperationPanel>を配置するだけで、行追加・行削除などのタプルに対する基本的な操作が行えます。
プログラミング例<k:tmtable id="sampleTmtable" class="imui-form"> <thead> <tr> <td> <k:tmtableOperationPanel position="header" allowAdd="true" allowDel="true" /> </td> <th><k:surface surfaceKey="入力欄1" requiredMark="true"/></th> <th><k:surface surfaceKey="入力欄2" requiredMark="true"/></th> </tr> </thead> <tbody> <tr> <td> <k:tmtableOperationPanel position="detail" allowAdd="true" allowDel="true" /> </td> <td><k:text name="inputArea1" mode="0"/></td> <td><k:text name="inputArea2" mode="0"/></td> </tr> </tbody> </k:tmtable>
3.2.2.6. TMTableの関連API¶
本項では、TMTableのタプルの操作やデータの設定・取得の方法を紹介します。各APIの詳細は『intra-mart Accel Kaiden! JsDoc』を参照してください。
3.2.2.6.1. タプルへのデータ設定¶
タプル内のエレメント(テキストボックスなど)に値を設定する場合には、次のAPIを使用してください。
append(data, exclude)最下行にタプルを追加し、そのタプルに対しdataを設定 insertUpper(tupleId, data, exclude)指定タプルの上にタプルを挿入、そのタプルに対しdataを設定 insertUnder(tupleId, data, exclude)指定タプルの下にタプルを挿入、そのタプルに対しdataを設定 setTupleData(tupleId, data, exclude)指定タプルに対しdataを設定 replaceAll(datas, exclude)全行削除後、datas(配列)の分だけ行追加しデータを設定します ※タプルIDを復元する replaceAllNewTupleId(datas, exclude)全行削除後、datas(配列)の分だけ行追加しデータを設定します ※タプルIDを復元せずに新たなタプルIDを付与 appendAllNewTupleId(datas, exclude)datas(配列)の分だけ行追記しデータを設定します ※タプルIDを復元せずに新たなタプルIDを付与コラム
次のソースは、TMTableに行を追加し、text1に”txt1”をtext2に”txt2”を設定する例です。excludeにtext3が指定されているため、text3は値が設定されません。// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; //タプルを追加するとともにデータを設定 tmtable.append({text1:"txt1", text2:"txt2", text3:"txt3"}, {text3:true});
3.2.2.6.2. タプルのデータ取得¶
タプルのデータを取得する場合には、次のAPIを使用してください。
getTupleData(tupleId, includeLabel)特定のタプルのデータをjavascriptオブジェクトの形式で返却 getCount()Tmtableの行数を返却 getAvailabilityTupleIds()現在有効なタプルIDを配列で返却 getDataSet()タプルデータの配列をjavascriptオブジェクトの形式で返却 getColumnValues(fldName)タプルのうち特定のフィールドキー(もしくはフィールドキーの配列)の入力データをすべて返却
3.2.2.6.3. タプルのイベント処理¶
タプルのイベント処理は次の様に実装してください。
タプル追加(挿入)直前// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; //タプル追加(挿入)直前イベント tmtable.addEventPreNewRow(function(tupleId, tmtableAccessor) { //引数:tupleId :挿入起点となるタプルID //引数:tmtableAccessor:当該TMtableへのAccessor }); タプル追加(挿入)直後(データ設定前)// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; //タプル追加(挿入)直後(データ設定前)イベント tmtable.addEventPostNewRowBeforeSetData(function(tupleId, tmtableAccessor, data) { //引数:tupleId :新たに挿入されたタプルID //引数:tmtableAccessor:当該TMtableへのAccessor //引数:data :挿入されたタプルに設定しようとしている値 }); タプル追加(挿入)直後(データ設定後)// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; //タプル追加(挿入)直後(データ設定後)イベント tmtable.addEventPostNewRow(function(tupleId, tmtableAccessor, data) { //引数:tupleId :新たに挿入されたタプルID //引数:tmtableAccessor:当該TMtableへのAccessor //引数:data :挿入されたタプルに設定された値 }); タプル削除時// TMtableの取り出し var tmtable = KAIDEN.getGadget("ガジェットID").tmtables["TMTableID"]; //タプル削除時イベント tmtable.addEventDecreaseRowFunc(function() { });