- PR -

WebFormのDataGridのDataGridのスクロールバー

1
投稿者投稿内容
レイコ
会議室デビュー日: 2003/12/15
投稿数: 11
投稿日時: 2003-12-15 17:29
投稿の場所が間違ったと思いますが、ぜひ皆さんのご教授をいただきたいです。
ASP.NETでWebFormのDataGridのスクロールバーの位置制御についてどうしてもうまくいきませんでした。
今までのDataGridのスクロールバーについての検討文章を拝見しました。

formのSmartNavigation=TrueでDataGridの選択際のスクロールバーの位置をうまくコントロールできましたが、DataGridを選択してから、DataGridの以外のボタンを押すと、該当行のデータを処理しようと思うが、やはりスクロールが先頭に行って、選択行が見えなくなってしまいました。JAVAスクリプトでコントロールできるとお聞きしましたが、JAVAスクリプトの内容を教えていただければ助かります。ほかにはやり方や相関サイトをご存じてあればぜひ教えてください。
よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-15 18:22
 Response.writeメソッドで、何か書いていませんか?これ使うとアウトです。

 スクリプトならばPage.RegisterStartupScriptメソッドか、Page.RegisterClientScriptBlockメソッドを使ってください。
レイコ
会議室デビュー日: 2003/12/15
投稿数: 11
投稿日時: 2003-12-15 19:55
Jittaさん、ご返事ありがとうございます。本当な初心者で申し訳ありません。質問が笑われるとおもいますが、
 Response.writeもしくはPage.RegisterStartupScript、.RegisterClientScriptBlockがどのようにDATAGRID(span)のスクロールバーが制御できますか。
これはスクリプトの内容を引き出す機能でしょうか。HELPを呼んでも使い方がわかっていません。無理なお願いですみませんですが、出来ればわかりやすい説明又はサンプルをいただけないでしょうか。よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-15 22:32
引用:

レイコさんの書き込み (2003-12-15 19:55) より:

 Response.writeもしくはPage.RegisterStartupScript、.RegisterClientScriptBlockがどのようにDATAGRID(span)のスクロールバーが制御できますか。


う〜〜ん、そうきたか(笑) 確かに、その通りです。が、私がいいたいところは別にあります。

引用:

formのSmartNavigation=TrueでDataGridの選択際のスクロールバーの位置をうまくコントロールできましたが、DataGridを選択してから、DataGridの以外のボタンを押すと、該当行のデータを処理しようと思うが、やはりスクロールが先頭に行って、選択行が見えなくなってしまいました。


この部分です。『DataGridの以外のボタンを押すと、該当行のデータを処理しようと思うが、やはりスクロールが先頭に行って、選択行が見えなくなってしまいました。』ということなので、『DataGrid以外のボタン』のイベントハンドラでResponse.Writeをしていませんか?Response.Writeでスクリプトなどを書き出すと、HTML要素の外にスクリプトが書き出され、ブラウザは一応理解してくれますが、『HTMLファイル』ではないものになってしまいます。そのため、JavaScriptから制御ができなくなります。SmartNavigatorの機能はJavaScriptを使っているので、Response.Writeを使うとSmartNavigatorも使えなくなります。ですから、スクリプトの吐き出しをしているならPage.Register系のメソッドを使ってください。


ということです。
ですから、Response.Writeを使われていないなら、外しています。で、そういう場合は、とりあえずしたの「www」のリンクから私のホームページへ行って、「更新記録」をよく見てください。
レイコ
会議室デビュー日: 2003/12/15
投稿数: 11
投稿日時: 2003-12-16 12:30
ありがとうございました。本当に勉強になりました。
確かにResponse.writeの記述がありました。言われた通りにやってみましたが、結果は変わっていません。ほかにも不思議な現象がありました。例えば、DATAGRIDの選択ボタンを押した時にも同じ処理が入っているが、スクロールが先頭に行ってません。Jittaさんのホームページをじっくり読んでから、いろいろ試してみてからまた原因をご報告させていただきます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-16 13:11
> 言われた通りにやってみましたが、結果は変わっていません。
> ほかにも不思議な現象がありました。

 過去の例によると、.NET FrameworkやIE(というか、JScript?)のバージョンによっても、いろいろあるようです。
 スレッドディレクトリ(スレッド一覧で、上の方にあります)から、「Web Application > SmartNavigation」に行って、一通り目を通してみてください。
レイコ
会議室デビュー日: 2003/12/15
投稿数: 11
投稿日時: 2003-12-23 19:20
お世話になっております。
おかげさま表題の件を解決しました。
Jittaさんの助言の通り、JAVAスクリプトを使って、具体的なHTMLのソースは次です。
<FORM id="Form1" runat="server">
<INPUT id="ScrollTop" type="hidden" runat="server">
  <span id="タグID" onscroll="fcScroll_Y(this)">
...
</FORM>
<script language="javascript">
function fcScroll_Y(Panel) {
try {
var intScrollTop = objPanel.scrollTop;
document.all("ScrollTop1").value = intScrollTop;
} catch (e){}
}
try{
// スクロール位置設定
try{
document.all.tags("SPAN")("divScrollBar").scrollTop = document.all("hdnScrollTop1").value;
} catch(e){}
}
catch(e){}
</script>

SmartNavigation=Trueを設定しなくてもOK、Response.Writeでスクリプトを書き出しても,スクロールバーの位置は少しもずれないようです。

以上ご報告いたします。ありがとうございました。
1

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