- PR -

空白表示 または &→&変換させたくない

投稿者投稿内容
cap
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2004-01-30 11:40
お世話になります

現在VB.NETでWEBアプリを作成していますが、
空白の表示に困っています

1つのリストボックスに
2つのテキストボックスから拾ってきた値を一行で挿入・表示させようとしています。

dim Str = Me.Text1.Text.PadRight(5) '5文字分の余裕をもたせたい
Str += Me.Text2.Text
として
Me.List1.Items.Add(Str)

と挿入させると、
htmlソースでは リストの中身が
<option value="1 2">1 2</option>

となり、空白がつぶれて表示されてしまいます。
かといって
 Str.Replace(" ", "&nbsp;")
Me.List1.Items.Add(Str)

とすると、htmlソースが
<option value="1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2>
1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2</option>

となり、表示上"&nbsp;"がそのまま文字列表示されてしまいます。

どなたか空白表示の方法ご存知でしたらご教示お願いします。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-01-30 11:49
 これでいいのかな?

//サンプル
<html>
<body>
<select>
<option><pre>あ い う え お</pre></option>
<option>あいうえお</option>
</select>
</body>
</html>
cap
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2004-01-30 12:04
takuさん 素早いレスありがとうございます

ご提示のサンプルはhtmlだとうまくいくんです...

VB.NETでリストボックスのアイテムのテキストとして記述すると
"<pre>あ い う え お</pre>"
と言う風にタグも表示されてしまいます。

htmlソースを見ると
<option>&lt;pre&gt;あ い う え お&lt;/pre&gt;</option>
と < , > が変換されてしまいます。
変換されない方法があればいいんですが...

taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-01-30 13:24
 なるほど、HTMLタグを使用できなくしてあるんですね。

それならご自分でHTMLタグを使用できるリストを作成するしか手はないですね・・・。
残念ながら、Javaな私はこれくらいしか回答できません・・・。
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2004-01-30 13:33
capさんこんにちは。

半角の空白ではなく、全角スペースにしてみてはどうでしょうか?
cap
会議室デビュー日: 2003/08/19
投稿数: 15
投稿日時: 2004-01-30 14:12
なか-chanさん ありがとうございます。

解決しました。
全角空白でOKでした。

現状、値表示が半角なため、
そのままだと行毎に表示がずれますが、
表示を全て全角にすることで対応できそうです。

全角を使うことを見落としておりました。
ありがとうございました。

ちなみに、やはり半角でやるのはムリなのでしょうか
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-01-30 14:45
カスタムコントロールにしてRenderContentsをオーバーライドするとか
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7866&forum=7
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-01-30 15:51
引用:

現在VB.NETでWEBアプリを作成していますが、
空白の表示に困っています

(中略)

どなたか空白表示の方法ご存知でしたらご教示お願いします。



最初に奇麗事というか、建前を。

まず、WEBでの表示体裁の問題ですから、達成出来るかどうかはUA(のCSS対応状況)に依存します。妙なタグ付けで無理やり実現するのは避けた方がいいでしょう。
#DTDを無視したデータは破綻の第一歩です

表示上の要件で隙間を空けたいからといって、安直に「&nbsp;」を使うのも避けてください。それらはそういう用途のためにあるのではありません。

全角スペースに関しても避けた方がいいでしょう。(英語圏)開発者の配慮不足を起因として、たまたまそのよう(全角サイズの空白)に表示されてしまっているだけで、率直に言えばただの「バグ」です。特定環境固有のバグを利用したトリッキーな実装が往々にして後に様々な問題の火種になりがちであることはご存知のことと思います。

予算や納期の兼ね合いもあるので難しい場合も多いかと思いますが、場当たり的に対処しても、別の角度からの検証であっさりと破綻したりします。
#「MACのIEから見たら表示がおかしい」「Netscapeで(以下略)」「IEのバージョンを新しくしたら...」等

Webアプリの表示体裁の要件に関しては、まず環境を絞って、その条件内で適用可能なCSS設定で乗り切るようにするのが基本ではないかと思います。
#なので、この手の質問の場合には、ターゲットUAも同時に挙げていただけると助かります

さて、ご質問の件に関してですが、具体的には
http://chaichan.hp.infoseek.co.jp/qa4000/qa4016.htm
この辺が関連する話題になりそうです。

optionのwhite-space設定を変えることで対処することになるわけですが、Netscape 7.02はOK、WinIE6SP1はNGのようですね。
実際私もIE6SP1で試しにやってみましたが、white-spaceに関しては指定を全く受け付けてくれないようでした。色の指定ですとか、ボールド指定ですとかは通ったんですが……。

---

で、本音。

多分、WindowsのIE5〜IE6くらいがメインターゲットだと推測しますので……今回はバグ利用する(かクライアントを説得して諦めてもらう)ことで乗り切るしかないでしょうね。正攻法で無理なんですから……。
コードをあまりいじりたくないのでしたら「半角スペース(2個)→全角スペース」の置換が手っ取り早いと思います。
少々手がかかっても半角スペース1個サイズにまでこだわりたいのでしたら、Select-Optionを生成する部分の実装に手を加えて、Valueには手を加えずにOption要素の表示用テキストのみ「半角スペース→&nbsp;」置換する処理を加えることになると思います。

※文章がおかしかったので一部修正、さらに一部加筆しました
※※修正しているうちに全く別物になってしまいました(TT

[ メッセージ編集済み 編集者: 永井和彦 編集日時 2004-01-31 14:25 ]

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