- PR -

DropDownListにおけるList内の項目整列について

投稿者投稿内容
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-09-11 11:41
引用:

未記入さんの書き込み (2006-09-11 10:52) より:
上記での問題は、固定ピッチフォントにすることで解決されるのでしょうか?


幅が「半角・全角」に対して、基本的に「1:2」ですよね?固定ピッチフォントは。
私は解決しそうに思いますよ。
現状、表示がガタガタなのであれば、プロポーショナルフォントを使用しているのでしょう。

引用:

未記入さんの書き込み (2006-09-11 10:52) より:
そうであれば、申し訳ないのですがDropDownListの表示項目を固定ピッチフォントで
表示する方法をお教え願えないでしょうか?


DropDownListのFontプロパティを使ってみてはいかがでしょう。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-11 21:52
> たとえば複数の空白で埋めて整列しようとしても、勿論一桁分しか空白はできません。
忘れてました。。。

 HTML の表示側では、連続する空白類は1つの空白に置き換わるのでした。

例:
「 」← space(0x20) を、4つ置いています。
「  」← 全角空白(unicode 03000) を、2つ置いています。
コード:
「    」← pre 要素の中に、space(0x20) を、4つ置いています。
「  」← 全角空白(unicode 03000) を、2つ置いています。


かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2006-09-12 10:31
引用:

NAL-6295さんの書き込み (2006-09-08 23:44) より:
たとえば複数の空白で埋めて整列しようとしても、勿論一桁分しか空白はできません。
だからといって、 で埋めても勝手にエスケープしてくれて、 が文字列として出てきてしまいます。(ASP.NET1.1の話。2.0もですね。)

確かにデータバインドやコードビハインドでListItemを追加すると、文字列として出てきてしまいますね。

コード:
<asp:DropDownList id="DropDownList1" runat="server" Font-Names="monospace">
  <asp:ListItem Value="1">&nbsp;&nbsp;1:ああ</asp:ListItem>
  <asp:ListItem Value="2">&#160;&#160;2:いい</asp:ListItem>
  <asp:ListItem Value="100">100:うう</asp:ListItem>
</asp:DropDownList>

こんなんを試して、できるじゃんと思ってしまいました。
んで、代替案というかなんというか・・・

コード:
DropDownList1.Font.Name = "monospace"
DropDownList1.Items.Add(New ListItem(Server.HtmlDecode("&nbsp;&nbsp;1:Decodeしたやつ")))
DropDownList1.Items.Add(New ListItem("100:そのまんま"))
DropDownList1.Items.Add(New ListItem("&nbsp;&nbsp;2:nbsp2つ"))
DropDownList1.Items.Add(New ListItem("&#160;&#160;3:#1602つ"))
DropDownList1.Items.Add(New ListItem("  4:スペース2つ"))

下の3つのListItemは比較対象です。
なぜか HtmlDecode すると &#160; をレンダーしてくれる・・・。(なんで?
データバインドをカスタマイズするか、ForでListItemを追加する形にしてみてはいかがでしょうか。
でも、こんなめんどくさいことするのなら、スペース以外の文字を詰めたほうがいいんじゃないかと私もおもいます。

Fontは結局はstyleに変換されるからCssClassに書けばいいと思います。

あ、1.1でしか検証してませんので

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