- - PR -
ASP.NETでDataGridを表示しているWindowのスクロールバーが表示されない
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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で開発しています。) | ||||||||||||
|
投稿日時: 2006-10-24 15:28
出力されているHTMLを比較してみてください。何か違いがあるはずです(フレームの幅とかが一緒であれば)
初期の場合ははみ出す原因になる長いデータか何かがあったりしませんか?
DataGridの幅はWidthで指定できると思いますよ。それでも中身がはみ出せばWidth以上になることもありますが。 | ||||||||||||
|
投稿日時: 2006-10-24 17:03
あれから試行錯誤して、いくつかわかったことがありました。
Reload画面では、確かに横スクロールバーが表示されないのですが、カーソルキーでスクロールできること、 画面下のほうに非常に幅が小さいですが(見えるか見えないか、くらいの幅)、カーソルキーでスクロールさせると、スクロールバーのツマミらしきものが左右に異動していくこと、 などです。 これら現象から、どうも横スクロールバーは表示上、かすかに表示しているようです。 しかし、DataGridの表がスクロールバーにかぶさって、見えなくなっているようです。 こういったことがわかりましたが、 では、表が横スクロールバーにかぶらないように表示させるにはどうすればよいでしょうか。 | ||||||||||||
|
投稿日時: 2006-10-24 17:16
クロスサイトポスト。相互リンクします。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-10-24 18:42
念のため確認ですが、スクロールバーってブラウザのウインドウの端(フレーム表示だからフレームの端かな)に
つくやつですよね?DataGridについているもののことではないですよね? で、[横スクロールバー]とは、ウインドウの下端にあるやつだと思ってたのですがあってますか? 右端につくもののことではないですよね?
| ||||||||||||
|
投稿日時: 2006-10-24 18:59
> 念のため確認ですが、スクロールバーってブラウザのウインドウの端(フレーム表示だからフレームの端かな)につくやつですよね?DataGridについているもののことではないですよね?
はい、その通りです。 >で、[横スクロールバー]とは、ウインドウの下端にあるやつだと思ってたのですがあってますか? はい、その通りです。 >右端につくもののことではないですよね? 右側につくものではありません。 >引用: >----------------------------------------------------------------------------- >しかし、DataGridの表がスクロールバーにかぶさって、見えなくなっているようです。 >----------------------------------------------------------------------------- >引用: >----------------------------------------------------------------------------- >では、表が横スクロールバーにかぶらないように表示させるにはどうすればよいでしょうか。 >----------------------------------------------------------------------------- >状況がよくわからないのですがDataGrid(つまりtableタグ)がブラウザのスクロールバーの上に表示されているということですか?確認しているブラウザは何ですか? VisualStudioでデバックしており、ブラウザはIE(6.0SP2)です。 >引用: >----------------------------------------------------------------------------- >出力されているHTMLを比較してみてください。何か違いがあるはずです >----------------------------------------------------------------------------- > >これに尽きると思うのですが、これについてはどうですか? 比較して見ます。特にDataGridの部分を念入りに。 | ||||||||||||
|
投稿日時: 2006-10-24 19:24
>>-----------------------------------------------------------------------------
>>出力されているHTMLを比較してみてください。何か違いがあるはずです >>----------------------------------------------------------------------------- >> >>これに尽きると思うのですが、これについてはどうですか? >比較して見ます。特にDataGridの部分を念入りに。 比較して違いが見えました。 初期画面では、ちゃんと表示されているので問題ないのですが、編集画面を経由してもとの画面をReloadしている画面でのHTMLを見ると、 遷移前(編集画面)の情報がhtmlソースとして出力されているようです。 Reload後の表形式データの出力部分がhtmlソースに見えません。代わりに以上に長いVIEWSTATEデータが組み込まれていました。 これらから、どうも遷移のさせ方に問題があるのではないかと探っていきましたところ、 遷移方法でserver.transferを使っているのがまずかったようです。 response.redirectに変更したら、難なく正常に表示できました。 機能的に見て、この2者、似て非なるもののようですね。 いろいろアドバイスしていただき、ありがとうございました。 |
1