- PR -

データによって外部スタイルシートを切り替える

1
投稿者投稿内容
e3000
会議室デビュー日: 2004/02/06
投稿数: 19
お住まい・勤務地: 東京
投稿日時: 2004-03-01 15:31
どうか教えてください。

ページロード時にデータを読み込んで、
その値によって、適用する外部スタイルシートを
切り替えてページを出力するということは、
可能でしょうか。


よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-01 15:46
 具体的に、どのように変更しますか?

 全体を入れ替えてしまうのでしょうか?それとも、あるデータを表示するコントロールだけ変わればいいのでしょうか?


 renderで、aspxの内容を読みとることができますから、その時に変更してしまう、ということはできます。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-03-01 16:09
こんにちは。

複数のスタイルシートを準備しておいてどれを割り付けるかをデータによって切り分けたい、ということであれば、スタイルシートへのリンクをASPXにリテラルコントロールを貼り付けておいてデータを見てリンクをテキストでダラダラ書き出せばOKです。
e3000
会議室デビュー日: 2004/02/06
投稿数: 19
お住まい・勤務地: 東京
投稿日時: 2004-03-01 17:25
早速の返信、ありがとうございます。

具体的には、ページ全体のレイアウトを変更したいです。
たとえば、グループ化したコントロール群の配置やフォントサイズを
パターン分けしておいて、そのパターンごとにスタイルシートを作成
しておく感じです。

Renderメソッドを利用して、上書きしてしまうということでしょうか。
<LINK>要素を書き換える感じですか?

また、リテラルコントロールを貼り付けるというのは、
Renderの際にそのリテラルコントロールを追加するといった
感じですか?

まったくの初心者で手探り状態なので、すみませんが
よろしくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-01 18:18
スタイルシートを埋め込みたいところを<!--STYLE-->としておいて、

Renderメソッドの中でliteralコントロールを検索し、

それが先に定義した文字列だったら書き替える


・・・ということをしているようです。
#半年以上前に書いたコードは他人のコードよねぇ
コード:
Protected Overrides Sub Render(ByVal writer _
As System.Web.UI.HtmlTextWriter)
	Dim ctrl As System.Web.UI.Control
	For Each ctrl In Me.Controls
		If TypeOf ctrl Is LiteralControl Then
			Dim literal As LiteralControl = CType(ctrl, LiteralControl)
			Dim path As String = Application.Item("RootDir")
			literal.Text = literal.Text.Replace("<!--STYLE-->" _
, String.Format( _
"<LINK href=""{0}/Styles.css"" type=""text/css"" rel=""stylesheet"">" _
, path))
		End If
		ctrl.RenderControl(writer)
	Next
End Sub



RootDirは、たぶんありません。私がどこかでセットした値だと思います。Request.ApplicationPathあたりだと思います。
e3000
会議室デビュー日: 2004/02/06
投稿数: 19
お住まい・勤務地: 東京
投稿日時: 2004-03-01 19:20
ありがとうございました!
解決できました!

Literalコントロールの利用は、他にも
応用できそうです。

今後もよろしくお願い致します。
ありがとうございました!
1

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