- PR -

【ASP.NET2.0】GridViewのWidth指定が反映されない

1
投稿者投稿内容
NGO
常連さん
会議室デビュー日: 2005/06/15
投稿数: 29
投稿日時: 2006-08-10 17:30
いつもお世話になっております。

Windows XP SP2
Oracle10g
Visual Web Developer2005(ASP.NET2.0)

にて開発をおこなっております。



GridViewで指定したWidth指定通りに幅が設定されません。



DB上で
---------------------------
MEMO VARCHAR2(100)
---------------------------
と定義されているデータをバインドして、GridViewで表示させております。

このフィールドに半角データ100文字を登録いたしました。
(aaaaaaaa(中略)aaaaaaaaaa(100文字))

デザイナ上で、GridViewを選択し
[列の編集]-(該当するフィールド)-[ItemStyle]-[Width]:200px
と設定して画面表示させてみたところ、200px以上の幅になって画面一杯に表示されてしまいます。
(半角文字列が改行されずに、一行で表示されてしまっている)
[ItemStyle]以外の[ControlStyle][HeaderStyle]等でもWidth:200pxで指定してみましたが、やはり同じでした。
Wrap:Trueで設定しております。


全角データで50文字のデータが入っていた場合は、Width指定がしっかり反映されて、200pxの時点で折り返しされております。



何とか200pxで折り返しさせるようにしたいのですが、GridViewの設定などがおかしいのでしょうか?


なにとぞ宜しくお願いいたします。
NGO
常連さん
会議室デビュー日: 2005/06/15
投稿数: 29
投稿日時: 2006-08-10 17:40
ためしにHTMLで
<html>
<head>
</head>
<body>
<table border="1" width="200px">
<tr>
<td width="200px">aaaaaaaaaaiiiiiiiiiiuuuuuuuuuueeeeeeeeeeooooooooooaaaaaaaaaaiiiiiiiiiiuuuuuuuuuueeeeeeeeeeoooooooooo</td>
</tr>
<tr>
<td width="200px">ああああああああああいいいいいいいいいいううううううううううええええええええええおおおおおおおおおお</td>
</tr>
</table>

</body>
</html>
というファイルを作成して表示させてみたところ、同じ現象が生じております。

aaaaaaaaaa....の箇所を2バイト文字に変更してみたところ、width指定がしっかり反映されました。


ASP.NET2.0の問題というよりは、HTMLの問題??
未記入
ベテラン
会議室デビュー日: 2003/06/26
投稿数: 76
投稿日時: 2006-08-10 18:22


[ メッセージ編集済み 編集者: 未記入 編集日時 2007-01-19 21:47 ]
NGO
常連さん
会議室デビュー日: 2005/06/15
投稿数: 29
投稿日時: 2006-08-11 10:02
>ぜうす様
ご返信、ありがとうございます。
ご指摘の通りに<table>タグにstyle指定をすると、確かに強制的に200pxで固定されました。

ASP.NET2.0のGridViewだと、ソース上に<table>タグが出力されていないため、CSS上に
.tablefixed table
{
table-layout:fixed;
}
と定義させ、GridViewを
<div class="tablefixed"></div>ではさみこみ、すべてのフィールドのHeaderStyleにWidthの値を指定することで、table-layout:fixedを反映させることはできました。
すべてのフィールドが、指定したwidth指定で収まっております。
ただ、aaaaaaaa..の箇所が途中で途切れてしまって、折り返し表示がされませんでした。



WEBで調べてみると、htmlでの手法でしたが
http://www.tohoho-web.com/lng/200002/00020460.htm
http://www.tohoho-web.com/lng/199911/99110224.htm
http://homepage1.nifty.com/kodayan/dhtm/css/text02.htm
などで、強制的にスペースなどを入れることで改行ができるみたいですね。


う〜ん・・・もうちょっと悩んでみます。
鶴屋さん
会議室デビュー日: 2006/08/11
投稿数: 7
投稿日時: 2006-08-11 18:16
styleのword-breakを使うと強制的に折り返されます
元々英語圏のものなので、
半角のアルファベットが隙間なく並んでいる場合は1単語のはずなので、
見やすいように折り返さない、これが仕様になっている様です

ただ、このスタイルは現在IEの独自仕様とのことなので、
IE以外が対象となる場合は対処できませんし、
そもそもそのようなデータが入っても構わないのか、
折り返すべきでない単語等の途中で切れてしまっても良いのかどうかの問題にもなりますので、
設計者へ相談した方が良いかと思います

1

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