- PR -

ASP.NETでDataGridを表示しているWindowのスクロールバーが表示されない

1
投稿者投稿内容
Beginer
会議室デビュー日: 2006/10/24
投稿数: 9
投稿日時: 2006-10-24 14:17
ASP.NETでWebアプリケーションを開発しています。
分割フレーム構成にしており、左フレームにはメニューのリストを表示し、右フレームは、各メニューの中身を表示しています。
第一画面でDBからデータを抽出して表形式で表示しています。

表の各レコードには「選択」ボタンを配置し、このボタンをクリックするとクリックしたレコードのデータの編集画面に遷移します。
この表を表示するのにDataGridを用いています。
編集画面ではレコードのデータを編集して、DBのテーブルデータを更新しています。
更新完了後、元の画面に遷移し、DB更新後のデータをReloadしています。

このReloadの処理をかけるとき、普通にDBのテーブルデータを読み出し、DataGridに対してDataBindしているだけなのですが、DataBridを表示している画面の横スクロールバーが表示されません。

初期画面(DBからデータを抽出する画面)と編集画面でデータを編集しDB登録後、初期画面をReloadしているときは、同じプロシージャをCallして処理しています。なので処理的に2つは同一かと思います。

ただ、他のフォーラムで同一質問をしたとき得られたアドバイスとして、
「一般的にはブラウザは表示されているウィンドウの横幅に合わせて、ページの横幅を自動で調節してしまいます。幅を指定しなければスクロールバーは表示されないのが普通です。」
を頂いたのですが、初期画面でも、Reload画面でもDataGridの幅を特に指定していません。
(それそれの項目の列の幅はDataGridのプロパティビルダの「書式」=>「列」にて指定していますが)

初回画面では、指定していないのに、横スクロールバーが表示されており、Reload画面では指定していないから、横スクロールバーが表示されていない、という動作をしている、ということでしょうか。
どのようにDataGridの幅を指定してやればよいのでしょうか。


どうして表示されなくなるのでしょうか。

(.NET Framework1.1 VisualStudio2003で開発しています。)
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-10-24 15:28
引用:
初期画面でも、Reload画面でもDataGridの幅を特に指定していません。

指定したかどうかじゃなくて中身がはみ出しているかどうかでしょうね。
出力されているHTMLを比較してみてください。何か違いがあるはずです(フレームの幅とかが一緒であれば)

引用:
なので処理的に2つは同一かと思います。

出てくるデータまでまったく一緒ですか?
初期の場合ははみ出す原因になる長いデータか何かがあったりしませんか?


引用:
どのようにDataGridの幅を指定してやればよいのでしょうか。

どうなってほしいのですか?常にスクロールバーを表示したいということですか?
DataGridの幅はWidthで指定できると思いますよ。それでも中身がはみ出せばWidth以上になることもありますが。
Beginer
会議室デビュー日: 2006/10/24
投稿数: 9
投稿日時: 2006-10-24 17:03
あれから試行錯誤して、いくつかわかったことがありました。

Reload画面では、確かに横スクロールバーが表示されないのですが、カーソルキーでスクロールできること、
画面下のほうに非常に幅が小さいですが(見えるか見えないか、くらいの幅)、カーソルキーでスクロールさせると、スクロールバーのツマミらしきものが左右に異動していくこと、
などです。
これら現象から、どうも横スクロールバーは表示上、かすかに表示しているようです。
しかし、DataGridの表がスクロールバーにかぶさって、見えなくなっているようです。
こういったことがわかりましたが、

では、表が横スクロールバーにかぶらないように表示させるにはどうすればよいでしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-24 17:16
クロスサイトポスト。相互リンクします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-10-24 18:42
念のため確認ですが、スクロールバーってブラウザのウインドウの端(フレーム表示だからフレームの端かな)に
つくやつですよね?DataGridについているもののことではないですよね?
で、[横スクロールバー]とは、ウインドウの下端にあるやつだと思ってたのですがあってますか?
右端につくもののことではないですよね?

引用:
しかし、DataGridの表がスクロールバーにかぶさって、見えなくなっているようです。

引用:
では、表が横スクロールバーにかぶらないように表示させるにはどうすればよいでしょうか。

状況がよくわからないのですがDataGrid(つまりtableタグ)がブラウザのスクロールバーの上に表示されているということですか?確認しているブラウザは何ですか?

引用:
出力されているHTMLを比較してみてください。何か違いがあるはずです

これに尽きると思うのですが、これについてはどうですか?
Beginer
会議室デビュー日: 2006/10/24
投稿数: 9
投稿日時: 2006-10-24 18:59
> 念のため確認ですが、スクロールバーってブラウザのウインドウの端(フレーム表示だからフレームの端かな)につくやつですよね?DataGridについているもののことではないですよね?

はい、その通りです。

>で、[横スクロールバー]とは、ウインドウの下端にあるやつだと思ってたのですがあってますか?

はい、その通りです。

>右端につくもののことではないですよね?

右側につくものではありません。

>引用:
>-----------------------------------------------------------------------------
>しかし、DataGridの表がスクロールバーにかぶさって、見えなくなっているようです。
>-----------------------------------------------------------------------------
>引用:
>-----------------------------------------------------------------------------
>では、表が横スクロールバーにかぶらないように表示させるにはどうすればよいでしょうか。
>-----------------------------------------------------------------------------
>状況がよくわからないのですがDataGrid(つまりtableタグ)がブラウザのスクロールバーの上に表示されているということですか?確認しているブラウザは何ですか?

VisualStudioでデバックしており、ブラウザはIE(6.0SP2)です。

>引用:
>-----------------------------------------------------------------------------
>出力されているHTMLを比較してみてください。何か違いがあるはずです
>-----------------------------------------------------------------------------
>
>これに尽きると思うのですが、これについてはどうですか?
比較して見ます。特にDataGridの部分を念入りに。
Beginer
会議室デビュー日: 2006/10/24
投稿数: 9
投稿日時: 2006-10-24 19:24
>>-----------------------------------------------------------------------------
>>出力されているHTMLを比較してみてください。何か違いがあるはずです
>>-----------------------------------------------------------------------------
>>
>>これに尽きると思うのですが、これについてはどうですか?
>比較して見ます。特にDataGridの部分を念入りに。
比較して違いが見えました。
初期画面では、ちゃんと表示されているので問題ないのですが、編集画面を経由してもとの画面をReloadしている画面でのHTMLを見ると、
遷移前(編集画面)の情報がhtmlソースとして出力されているようです。
Reload後の表形式データの出力部分がhtmlソースに見えません。代わりに以上に長いVIEWSTATEデータが組み込まれていました。
これらから、どうも遷移のさせ方に問題があるのではないかと探っていきましたところ、
遷移方法でserver.transferを使っているのがまずかったようです。
response.redirectに変更したら、難なく正常に表示できました。
機能的に見て、この2者、似て非なるもののようですね。
いろいろアドバイスしていただき、ありがとうございました。
1

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