Day07-1
概要
BulletedList
&XmlDataSource
コントロールでフィールドを読み込もう!
このレッスンの狙い
RSSフィード
- RDF Site Summary/ Rich Site SUmmary フィードとは、サイト新着情報の伝達を目的としたXML文書のこと
- これらの情報を収集することで、自分が興味を持ったサイトの新着情報を手軽に収集することができる。
XmlDataSource
コントロールでXML文書を読み込む
@startuml
node DataAccessControl{
node GridViewコントロール
node TreeViewコントロール
node BulletedListコントロール
}
node XmlDataSource {
node XMLファイル
node XSLTスタイルシート
}
DataAccessControl -down-> XmlDataSource
XmlDataSource -up-> DataAccessControl
@enduml
BulletedList
コントロールの主なプロパティ
- データベースやXML文書など、任意のデータソースから箇条書きリストを生成するためのコントロールである。
BulletedList
コントロールの主なプロパティ
分類 | プロパティ | 概要 |
---|---|---|
バインド | DataTextField | テキストにバインドするフィールド名 |
バインド | DataTextFormatString | バインドされた値を整形する書式文字列 |
バインド | DataValueField | リスト値にバインドするフィールド名 |
情報 | items | リストの項目群 |
表示 | DisplayMode | 表示モード(HyperLink|LinkButton|Text) |
表示 | BulletStyle | 行頭文字のスタイル(Numbered|LowerAlpha|UpperAlpha|LowerRoman|UpperRoman|Disc|Circle|Square|CustomImage) |
表示 | FileBulletNumber | リスト番号の開始値(BulletStyle = “Disc|Circle|Square|CustomImage”以外の場合のみ) |
表示 | Target | リンク先ターゲット(DisplayMode=”HyperLink”の場合のみ) |
ユーザコントロールにプロパティを定義する
- サーバコントロールにプロパティが設定できるように、ユーザコントロールにもプロパティを設定することができる。
[Private プライベート変数名 As データ型]
Public [ReadOnlu|WriteOnly] Property プロパティ名 As データ型
[Get
Return プライベート変数名
End Get]
[Set (Byval value As データ型)
プライベート変数名 = value
End Set
End Property
フラグメントキャッシュを理解する
- Day04-1では、
@OutputCache
ディレクティヴを利用することで、コーディングレスで手軽にページをキャッシュできることを学習した。 - 動的なキャッシュを作成する必要がないときは、フラグメントキャッシュを使用することができる。
フラグメントキャッシュ
- ページの構成要素ごとに異なるキャッシュ定義を設定する技術のこと(半静的なキャッシュ)
- 頻繁に更新されるコンテンツには短いキャッシュを、固定的なコンテンツについては長時間持続されるキャッシュを設定することが可能である。
- フラグメントキャッシュといっても、先述したページキャッシュとほぼ同じ要領で設定できる。
- [.acsx]ファイルの中で
@OutputCache
ディレクティブを宣言するだけ。
- [.acsx]ファイルの中で
-
キャッシュルールの適用
<%@ OutputCache Duration=”120” Shared=”true” VaryByParam=”*” %>
@OutputCache
構文はWebフォームページで使用する場合と何ら変わりないが以下のような注意が必要Location
,VaryByHeader
属性は利用できない。VaryByParam
,VaryByControl
属性のいずれか片方は必須
VaryByControl
属性について
- [.ascx]ファイルでのみ使用可能な属性である。
VaryByControl
属性にコントロールのID値を指定することで、ユーザコントロールは自らに含まれるサーバコントロールの状態に応じてキャッシュを切り替えることができる。
@startuml
Node WebServer(IIS){
node CacheA
node CacheB
node CacheC
}
note left:ページの各部を\r\n別々のキャッシュとして保存\r\n→断片ごとに異なる\r\nキャッシュ規則を設定できる。
artifact WebPage{
frame ComponentA
frame ComponentB
frame ComponentC
}
ComponentA -up-> CacheA:Store
ComponentB -up-> CacheB:Store
ComponentC -up-> CacheC:Store
@enduml
部分的にキャッシュを無効化するSubstitution
コントロール
- SUbstitution: 代理
- コントロール単位でキャッシュを無効化することができる。
- (常に最新の情報が欲しい場合は、キャッシュ機能は邪魔である。)
<%@ Page Language="VB" %>
<%@ OutputCache Duration="120" VaryByParam="none" %>
...中略...
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
ltrTime.Text = DateTime.Now //現在時刻の表示
End Sub
Protected Shared Function GetCurrent(ByVal context As HttpContext) As String
Return Datetime.Now
End Function
</script>
解説
- Substitonコントロールで指定した方はキャッシュが有効にならず、リロード時も時刻が更新される。
まとめ
XmlDataSource
コントロールを利用することで、XML文書とデータアクセスコントロールとの関連付けをコーディングレスに行うことができる。XmlDataSource
コントロールはただ単にXML文書を読み込むだけでなく、XSLTスタイルシートを用いてXML文書を変換したり、xPath式を用いて文書の一部を抽出したりするための機能を提供する。BulletedList
コントロールは、データソースの内容に基づいて、箇条書きリストを作成する。- プロパティ設定に応じて、テキストリストからリンクリスト、ボタンリストなどを生成できる。
- フラグメントキャッシュを利用することで、ユーザコントロールの単位に異なるキャッシュルールを割り当てることが可能。
以上