- PR -

WebFormの背景色の変更

1
投稿者投稿内容
ひろ
会議室デビュー日: 2004/01/29
投稿数: 13
投稿日時: 2004-04-28 20:38
いつも勉強させていただいてます。

検索をかけてこれだ!というものがヒットしなかったようなので、
とても初歩的な/常識的な知識なのかもしれませんが、教えてください。

ASP.NET(C#)でWebアプリケーションを作成していたのですが、
サーバーサイドで処理をおこなって、エラーであれば、
Webフォームの背景色を変更してほしい、と要望がありました。

javascript で普通に書けば、例えば、document.bgColor = "#FF0000"; の
ように書けると思うのですが、どうも効きません。
CSSでBODYのスタイルで background-color を設定していまして、
この指定をはずすと、背景色を変えることができるようです。

お聞きしたいことは、
 1.CSSの設定よりも強い背景色の(動的な)設定はできないのでしょうか
 2.CSSの設定が強い場合、CSSでの背景色指定をはずし、サーバーサイドの
 コードでどうにかしようと思うのですが、
 現在思いついている方法が、
 背景色用にWebControlLabelをはりつけ、エラー時には
コード:
  this.Label.text = 
     "<script language=javascript>document.bgColor='#FF0000'</script>";
 


これでも背景色は変えれるのですが、もっとスマートな方法はないものでしょうか。

以上、ご教授のほど、よろしくお願いいたします。
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2004-04-28 22:22
ども、kalzeと申します。

要求に合うものかどうかわからないのですが。

document.bgColor で変更するのは、bodyタグで設定しているものだった気がします。
コード:
<body bgcolor="#000000">


これで指定しているもの。

CSSで背景色の設定をしている場合、
CSSの設定の方が優先度が高い(はずな)ので、
document.bgColor では変更はされているんだけど、
表示に影響しないというところではないでしょうか?

なので、javascriptを使用してよいというのであれば、
CSSの色設定を変更してしまえばよいのではないでしょうか?

コード:
function chg_color()
{
	document.body.style.backgroundColor = "#0000ff";
}


あくまでサンプルですが。

一応、
IE6
Opera7.22
NN7.1
では動作確認してみました。


ひろ
会議室デビュー日: 2004/01/29
投稿数: 13
投稿日時: 2004-04-30 20:27
kalzeさん、ご教授ありがとうございました。

CSSでの設定を変えれないのか??? と思い込んでいたので、
document.body.style.backgroundColor という書き方を初めて知りまして、
大変勉強になりました。

贅沢をいえば、
javascriptではなく、サーバーサイドでダミーのラベル等使わず、
書ければ綺麗だよなぁ、と思いはするのですが、
現状、教えていただいたjavascriptを使って、ダミーのラベルに書き出して
背景色を変える方向で進めようと思います。

ありがとうございました。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-05-01 02:28
はずしてたらすみません。
Literalコントロールではどうでしょう?

↓こんな感じで。Textプロパティの値を動的に変える。
コード:
<body style='background-color:<asp:literal id="BgColor" text="red" runat="server" />;'>



↓またはこんな感じで。Visibleプロパティの値を動的に変える。
コード:
<body <asp:literal id="ColorChanger" text="style='background-color:red;'" visible="true" runat="server" />>


He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-05-01 02:47
↑を書きながら、別の方法を思いつきました。こちらの方がスマートかもしれません。

1. BODY要素にRUNAT属性をつけて、サーバコントロールとする。
  ※HtmlGenericControlとして扱われます。
  『<body id="BodyElement" runat="server">』

2. 上記コントロールのStyleプロパティの値を動的に変更する。
  『BodyElement.Style["background-color"] = "red";』
ひろ
会議室デビュー日: 2004/01/29
投稿数: 13
投稿日時: 2004-05-04 10:25
Heさん、ご教授ありがとうございました。

お恥ずかしながら、BODY自体を runat =server にする、ということ
自体に考えが及びませんでした。
(Formはrunat=server で利用しているのですが..)

そしてHtmlGenericコントロール、という言葉も初めて知った次第です。..。
調べてみて、試してみて、一番よさそうな方法を使わせていただきたいと思います。

ありがとうございました。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-05-04 12:00
 こんにちは

 せっかくスタイルシートにデザインを外出ししてるのですから、ここもスタイルシートで対応するのはどうでしょう。

[スタイルシート側]
BODY
{
background-color:white;
その他属性
}
BODY.ONERR
{
background-color:red;
}

..としておいて、エラー時にはBODYにAttribute.Add(綴りは自信なし)でCLASS属性にONERR(例)を付加してやれば、背景色だけが上書きされると思います。
1

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