포럼: 公開ディスカッション (Thread #18134)

Gridのスクロール位置のリセットについて (2008-03-26 19:53 by Anonymous #35776)

お世話になっております。

現在マスカットを利用し開発しているのですが、表題の件につき質問させて下さい。

Gridを表示させる際に表示量が指定幅を超えると自動でスクロールバーがでます。
このスクロールバーをスクロールした状態で、再度検索処理等行いGridへ値をセットするとスクロール位置が保持されたままになりリセットされません。

個別にリセットするロジックを盛り込めばリセットされますが効率的では有りません。

grid.jsの機能拡張を行う事により、値を再セットした際にスクロール位置がリセットするよう出来ないでしょうか?

よろしくお願い致します。

Reply to #35776×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Gridのスクロール位置のリセットについて (2008-03-26 20:00 by Anonymous #35777)

すいません
投稿した者です。

投稿時に同内容で二件登録されてしまったようです。
1件は破棄して頂けますでしょうか。

よろしくお願いします。
Reply to #35776

Reply to #35777×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Gridのスクロール位置のリセットについて (2008-03-28 18:01 by ochida #35800)

grid.js はmaskat およびrialto の中からgrid 箇所のみ抜き出したファイルでしょうか?

いずれにしましても以下のどちらかで対応できます。

■maskat.js に対応を行う場合
ObjWrapper.prototype.setGridValue メソッド
の最後に以下を追記
if(this.obj.finInd > 0{
this.obj.getHtmlLineFromIndex(0).focus();
}

■rialto.js に対応を行う場合
rialto.widget.Grid.prototype.fillGrid メソッド
の最後に以下を追記
if(this.finInd > 0{
this.getHtmlLineFromIndex(0).focus();
}

質問の意味が違っていたらごめんなさい。
Reply to #35776

Reply to #35800×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Gridのスクロール位置のリセットについて・修正 (2008-03-28 18:03 by ochida #35801)

ソースコードのコピペ後の整形時に
カッコが抜けておりました。すみません。。。

■maskat.js に対応を行う場合
ObjWrapper.prototype.setGridValue メソッド
の最後に以下を追記
if(this.obj.finInd > 0){
this.obj.getHtmlLineFromIndex(0).focus();
}

■rialto.js に対応を行う場合
rialto.widget.Grid.prototype.fillGrid メソッド
の最後に以下を追記
if(this.finInd > 0){
this.getHtmlLineFromIndex(0).focus();
}
Reply to #35776

Reply to #35801×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Gridのスクロール位置のリセットについて・修正 (2008-03-31 19:46 by Anonymous #35830)

ochida 様

ご教授有難うございます。

教えて頂いた内容をgrid.jsへ反映したのですが動作しませんでした。
確認した所、こちらのバージョンではgetHtmlLineFromIndex()が定義されておりませんでした。

こちらのバージョンが何か明確に把握できていないのですが、grid.jsの先頭には以下の記載があります。

VERSION:0.85
DATE:15/06/2006

また最新版(maskat - 1.4.5)の該当ソースを併せてこちらのソースに盛り込んで見たのですが、これも動作しませんでした。

rialto.widget.Grid.prototype.getHtmlLineFromIndex = function (indL) {
var node = null;
var idInt = rialto.array.indexOf(this.mapArray, indL);
if (idInt != -1) {
node = document.getElementById(this.id + "_LineTab_" + idInt);
}
return node;
};

対応方法等ご教授頂けないでしょうか?
お手数ですが、よろしくお願い致します。
Reply to #35801

Reply to #35830×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE:RE:RE: Gridのスクロール位置のリセットについて (2008-04-02 11:42 by yasumoto #35854)

マスカットのご利用ありがとうございます。

ご質問の際には、ユーザのご登録をお願いいたします。


0.85は、rialtoのバージョンだと思われます。
マスカットのバージョンを教えて頂けると助かります。


修正の方法ですが、
以下の方法でいかがでしょうか?


対象のJavaScriptファイル内で、
refreshGridを定義している部分を見つけて下さい。
その中に、下記の部分があります。

this.tableauHTML.innerHTML=tabINNERHTML.join('');

この処理の後に、以下の文を加えて下さい。
-----
this.tableauHTML.scrollTop = 0;
-----



上記の説明で、「対象のJavaScriptファイル」のファイルと記載しましたのは、
基本的に、rialto.jsファイルが対象だと思いますが、
マスカット1.4.5ですと、
タブ移動の処理を入れるために、
maskat.jsで refreshGridをオーバーライドしています。
その為、1.4.5ですとmaskat.jsが修正対象ファイルになるからです。


上記の修正は、1.4.5で動作確認しました。
ただし、rialto 0.85でも
同じコードがありましたので
多分動作するかと思われます。

動作しなければ、またご連絡頂けますようお願いいたします。

よろしくお願いいたします。
Reply to #35776

Reply to #35854×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login