- PR -

MultiLineのTextBoxで、WRAP=softにする方法

1
投稿者投稿内容
Kondo
常連さん
会議室デビュー日: 2002/06/27
投稿数: 22
投稿日時: 2002-11-11 10:23
お世話になります。
ASP.NETのMultiLineのTextBoxで、<textarea>タグのWRAP=softにする方法がわかりません。
ブラウザがIEの場合は、TextBoxのプロパティのWrapをTrueにすることで<textarea>内で自動改行してくれるのですが、NetscapeNavigatorでは<textarea>内で自動改行されません。NetscapeNavigatorでも<textarea>内で自動改行するようにするにはどうすれば良いのでしょう?
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-11-11 15:40
引用:

ブラウザがIEの場合は、TextBoxのプロパティのWrapをTrueにすることで<textarea>内で自動改行してくれるのですが、NetscapeNavigatorでは<textarea>内で自動改行されません。


NN6 は wrap 属性を無視してる、ということでしょうか?
W3C の規格に無いものをサポートしていないブラウザがあっても、 それはしかたのないことです。 ( W3C の規格をサポートしていないブラウザには、 文句は付けられますが、 やっぱりしかたないですね。 f(^^; )
ブラウザの細かい違いには、そのつど地道に対応していくしかありません。 ( ブラウザ独自の機能を使っちゃうと、 その対応がより大変になるわけです。 )

※ W3C の HTML 4.01 で、 textarea 要素に付けられる属性は以下の通りです。
( http://www.w3.org/TR/html401/interact/forms.html#h-17.7 より )
name, rows, cols, disabled, readonly, tabindex, accesskey, onfocus, onblur, onselect, onchange; id, class, style, title; lang, dir; onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

※ ちなみに、textarea 要素の wrap 属性は、 NN2 で導入されたらしい。
http://home.jp.netscape.com/ja/eng/mozilla/2.0/relnotes/mac-2.01I.html#Images


と、 これだけ書いておいてなんですが… f(^^;
手元の NN6.2 では、wrap="soft" が効きましたよ。
ひょっとして、form 要素に含めていないとか?

---
ASP.NET (魔法の杖) を使いこなすために…
ユニバーサル HTML/XHTML


[ メッセージ編集済み 編集者: biac 編集日時 2002-11-11 15:41 ]
Kondo
常連さん
会議室デビュー日: 2002/06/27
投稿数: 22
投稿日時: 2002-11-12 08:56
biacさん、ありがとうございます。

> 手元の NN6.2 では、wrap="soft" が効きましたよ。

私の質問は、ASP.NETでwrap="soft"を指定するにはどうすれば良いかということです。
ASP.NETのMultiLineのTextBoxでは、wrap="true"は指定できますが、wrap="soft"を指定できません。デザイナでなくHTMLで強引に書き直すとエラーになります。

biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-11-12 14:07
引用:

ASP.NETのMultiLineのTextBoxでは、wrap="true"は指定できますが、wrap="soft"を指定できません。デザイナでなくHTMLで強引に書き直すとエラーになります。


すみません、はやとちり。 m(_`_)m

TextBox Web Server Control で、ですか?
それはムリというものでしょう。

MSDN Library: .NET Framework General Reference: TextBox Web Server Control より引用
コード:
<asp:TextBox id="value"
     AutoPostBack="True|False"
     Columns="characters"
     MaxLength="characters"
     Rows="rows"
     Text="text"
     TextMode="Single | Multiline | Password"
     Wrap="True|False"
     OnTextChanged="OnTextChangedMethod"
     runat="server"/>


…しっかり、True または False しか指定できないと規定されています。

TextBox Web Server Control の実体である System.Web.UI.WebControls.TextBoxWrap Property は、
public virtual bool Wrap {get; set;}
と定義されていますから、True か False しか受け付けないわけです。

対処としては、TextBox Web Server Control を継承したクラスを作って、 AddAttributesToRender メソッドをオーバーライドすると上手く行くかもしれません。


HtmlTextArea Control じゃダメなんですよね?
Kondo
常連さん
会議室デビュー日: 2002/06/27
投稿数: 22
投稿日時: 2002-11-12 15:44
biacさん、ありがとうございます。

> ※ HtmlTextArea Control じゃダメなんですよね?

なるほど。そういう手がありましたか。ということで、早速試してみました。結果的にはこれを使えばwrap="soft"が指定できました。ただ、VS.NETのデザイナのプロパティではデフォルトでwrap="soft"になっているにも関わらず、実際のHTMLではwrap="soft"とはなっておらず、HTMLモードで一旦hardにしてsoftに切り替えるとか手入力しないとダメでした。

ASP.NETでも、Request.Formを使うことになるとは思っても見なかった。

しかし、<textarea>ってIEとNNでは表示幅が大きく違いすぎてデザインに困りますね。
Web.UI.WebControls.TextBoxだと見た目の表示幅は結構同じに出来て嬉しかったのに。
Kondo
常連さん
会議室デビュー日: 2002/06/27
投稿数: 22
投稿日時: 2002-11-12 15:52
自己レスです。

> Web.UI.WebControls.TextBoxだと見た目の表示幅は結構同じに出来て嬉しかったのに。

HtmlTextAreaでも、colsでNN用に横幅を調節して、styleのwidthでIE用に横幅を調整することが出来ました。
1

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