- PR -

Trinidadを用いてGridを表示した場合のチェックボックスの状態について

1
投稿者投稿内容
家猫
会議室デビュー日: 2008/10/01
投稿数: 3
投稿日時: 2008-10-01 01:14
初投稿になります。

現在、Trinidadの<tr:table>を用いて、HTMLで<table>を記述した場合と同じ表現を実現しようとしています。

その際、下記のような問題があり解決策を探しています。

1. 1ページの表示限界row数を超えるデータを与える
2. Trinidadが自動でページ送りを付与してくれる
3. 現在表示しているページで行のチェックボックスを選択する
(※チェックボックスはtr:tableのrowSelection属性のmultiple指定で自動生成)
4. ページを切り替える
5. 3で選択しているページが見えない状態で削除処理を実施
6. 3で選択していたページに戻ると、選択していた行は削除されているがチェックボックスの選択が外れていない

こちらがしたいことは、5の削除処理を実施後に、現在見えている、見えていないに関わらず、チェックボックスの状態を解除したいと考えています。

tr:tableの属性指定で可能なのか、それとも処理を追加しなければいけないのか、調査していますが分かっていません。

何か情報ご存知の方いらっしゃいましたらご教示の程、宜しくお願い致します。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-02 02:46
とりあえず、最終手段のごり押し方式で。
コード:


[jQuery]
$("table tr td input[type=checkbox]").each(function(o) {
o.check(false);
});
※かなり怪しいです。

とか、
[ベタ]
function allCheckOff() {
var $T = function() { return document.getElementsByTagName("input") }
var each = function(arr, func) {
for (var i=0;i < arr.length;i++) func(i, arr[i]);
};
//table->tr->td->input type=checkbox を見つける
each($T(), function(i, o) {
var tr = o.parentNode;
while (tr && tr.nodeName != "tr") tr = tr.parentNode;

if (tr != null) {
o.checked = false;
}
});

}




とりあえず、最終手段で出来ることを確認しておいて、
Trinidad 特有の設定パラメータを探すと良いでしょう。


追記:
なんかサンプル
http://www.irian.at/trinidad-demo/faces/demos/tableDemos/totalRow.jspx


なんかサーバー側で値を保持していません?
AddRow のサンプル見るとそんな感じがします。
スクリプトでどーのこーの出来そうも無さそうですね・・・



[ メッセージ編集済み 編集者: ぴあちゃん 編集日時 2008-10-02 03:20 ]
家猫
会議室デビュー日: 2008/10/01
投稿数: 3
投稿日時: 2008-10-02 09:59
ぴあちゃん様>
ご指摘の通り、ますは最終手段を確認してみて、その上でパラメータを探してみます。
ありがとうございました。
家猫
会議室デビュー日: 2008/10/01
投稿数: 3
投稿日時: 2008-10-07 10:41
先日、ぴあちゃん様よりご教示いただいたJavaScriptとは別に、
実際にTrinidadのClassを用いた解決方法が判明しましたので、
記述いたします。

■解決方法
CoreTable.getSelectedRowKeys().clear();

CoreTableは、画面上で現在選択している情報になります。
上記の方法を用いると、現在画面上で選択しているチェックボックスの
情報をgetSelectedRowKeys()で取得し、その状態をclear()で解除します。

尚、実際に実装する場合、一番最後にこの処理を行う必要があります。
処理の途中で現在bindしている情報を手放してしまうと、処理の対象を
見失ってしまい、想定外の動きをする場合があります。

(※Trinidadでは状態保持が仕様のようです。)

拙い説明ではありますが、参考になるようであれば活用してください。
1

スキルアップ/キャリアアップ(JOB@IT)