日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[翻译]Chameleon介绍(3) : 列表控件

發布時間:2025/4/5 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [翻译]Chameleon介绍(3) : 列表控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[原文]http://getben.com/archive/2007/01/11/introduction-to-chameleon-list-base-controls.aspx

這篇文章屬于我的文章系列Chameleon介紹...

Chameleon 列表控件顯示多個對象/值(例如一系列用戶,或者同一主題里的若干論壇貼子)。和單值控件類似,列表控件也支持同樣的基本屬性(ControlIdsToHideWhenNotVisible, ContainerId, CssClass, Tag, DisplayConditions, LeaderTemplate, TrailerTemplate, DataSource, and Attributes),但它還定義了額外的模板,用于支持對列表中的每個對象/值進行布局。這些模板包括(以輸出順序):
  • LeaderTemplate
    LeaderTemplate包含了在控件內容之前,內容包裝標簽之內輸出的標簽。LeaderTemplate不支持數據綁定(這點不像單值控件)。

  • HeaderTemplate
    HeaderTemplate代表要在ItemTemplate, AlternateItemTemplate以及NoneTemplate前面輸出的內容。
    這個模板繼承自Repeater(所有的Chameleon列表控件的基類).

  • ItemTemplate
    ItemTemplate代表DataSource里每一項的模板。
    這個模板繼承自Repeater(所有的Chameleon列表控件的基類)。

  • AlternateItemTemplate
    AlternateItemTemplate是可選的模板,用于交替輸出DataSource內的項。如果未定義,所有的項都會以ItemTemplate輸出。
    這個模板繼承自Repeater(所有的Chameleon列表控件的基類)。

  • NoneTemplate
    當DataSource不包含任何項時會輸出NoneTemplate。在這種情況下,可以通過設置ShowHeaderFooterOnNone為 false來隱藏HeaderTemplate和FooterTemplate(ShowHeaderFooterOnNone默認為true)。

  • SeparatorTemplate
    SeparatorTemplate在輸出的DataSource項之間(在ItemTemplate和AlternatingItemTeplate之間)輸出。
    這個模板繼承自Repeater(所有的Chameleon列表控件的基類)。

  • RowSeparatorTemplate
    RowSeparatorTemplate在預定義數量的項之后(并且在SeparatorTemplate的后面)輸出。ItemsPerRow屬性定義了RowSeparatorTemplate之間應該輸出多少項。
    在以行和列的形式顯示數據——比如相冊里的圖片時非常有用。
    注意除非ItemsPerRow的值大于零,否則RowSeparatorTemplate不會輸出。

  • AdTemplate
    AdTemplate表示要在DataSource的項之間顯示的廣告。廣告出現的位置由屬性AdPlacement(譯注:目前 AdPlacementOptions枚舉包括:None, PreFooter, PreSecond, PreSecondAndLast, Seperator)定義。

  • FooterTemplate
    FooterTemplate表示要在ItemTemplate, AlternateItemTemplate以及NoneTemplate后面輸出的內容。
    這個模板繼承自Repeater(所有的Chameleon列表控件的基類)。

  • TrailerTemplate
    TrailerTemplate包含了在控件內容之前,內容包裝標簽之內輸出的標簽。TrailerTemplate不支持數據綁定(這點不像單值控件)。

  • 與單值控件類似,與Community Server API對象相關的列表控件也根據它們包含的對象(如User, Post,等等)而命名,包括:
    • UserList(<CSControl:UserList />)
    • PostList(<CSControl:PostList />)
    • SectionList(<CSControl:SectionList />)
    • GroupList(<CSControl:GroupList />)
    • 等等...
    ??
    以及與特定應用相關的列表:
    • WeblogList(<CSBlog:WeblogList />)
    • WebLogPostList(<CSBlog:WebLogPostList />)
    • ForumList(<CSForum:ForumList />)
    • ForumPostList(<CSForum:ForumPostList />)
    • 等等...
    當Community Server 2007發布后,我們會有每個控件的文檔。大體上說,和單值控件一樣,每個Community Server API對象都有一個相應的列表控件。
    ??
    每個API相關列表控件都會根據它的上下文自動獲取一系列對象。上下文由以下項定義:
    • URL里的對象引用(例如貼子名稱,用戶ID,節的Application Key,等等)
    • 父控件(通常由列表控件定義)
    例如:
    • 如果頁面中沒有上下文(在URL中沒有指定對象引用),UserList控件默認情況下會列出網站的所有用戶。
    • 如果所在的頁面指定了節ID或節的Application Key(比如一個博客頁面),UserList控件將會列出此節的所有者。
    • 如果UserList控件在SectionList控件的ItemTeplate或AlternateItemTemplate里,它將會列出每個節的所有者。
    • 如果UserData控件在UserList控件的ItemTeplate或AlternateItemTemplate里,它會顯示UserList控件中定義的當前用戶。
    大多數控件同時也支持一個內置屬性,用于影響或改寫默認的隱式數據源。這個屬性的名稱是“QueryOverrides”,它的屬性很大程度上依賴于控件所列出的對象的類型。例如,UserList的QueryOverrides屬性支持:
    ??
  • IncludeHiddenUsers
    如果設為true,列表將包含隱藏用戶。

  • JoinedDate
    當處理JoinedDateComparer時使用的DateTime值。

  • JoinedDateComparer(LessThan, EqualTo, GreaterThan)
    如果指定了JoinedDate,用戶的注冊時間必須匹配JoinedDateComparer定義的條件才會包含在列表中。例如,如果JoinedDate是"6/8/2001", JoinedDateCompare是"GreaterThan",那么只有在6/8/2001之后注冊的用戶才會被列出.

  • LastPostDate
    當處理LastPostDateComparer時使用的DateTime值。

  • LastPostDateCompare(LessThan, EqualTo, GreaterThan)
    如果指定了LastPostDate,用戶的最后發貼時間必須匹配LastPostDateComparer定義的條件才會包含在列表中。例如,如果 LastPostDate是"6/8/2001",LastPostDateComparer是"LessThan",那么只有最后發貼時間在 6/8/2001之前的用戶才會被列出。

  • SortOrder(Ascending, Descending)
    對用戶排序方式(SortBy)的補充說明,順序還是倒序。
    默認情況下SortOrder的值是"Ascending"。

  • PageIndex
    要顯示的頁碼。例如,如果PageSize設置為10,PageIndex為0,將會顯示第1到10條用戶數據(如果PageIndex設為1,將會顯示第11到20條)。
    注意如果指定了PagerId,屬性PageIndex會被忽略,取代它作用的是分頁器的PageIndex值

  • PageSize
    一頁要顯示的用戶的數量。如果沒有指定PagerId,它將是列表中顯示的用戶的總數量。

  • Role
    如果指定,只會顯示屬于指定角色的用戶。

  • SearchEmail
    如果為true,SearchText會用來搜索用戶的郵件地址。

  • SearchUsername
    如果為true,SearchText會用來搜索用戶的名字。

  • SearchText
    如果指定,只有郵件地址或用戶名(取決于SearchEmail和SearchUsername的值)匹配的用戶才會被列出。

  • SortBy(JoinedDate, Username, Website, LastActiveDate, Posts, Email, RecentPosts)
    指定用戶排序的依據。以順序還是以倒序排序由SortOrder屬性定義。
    默認情況下,用戶根據Username排序。

  • AccountStatus(ApprovalPending, Approved, Banned, Disapproved, All)
    如果指定,只有處于指定賬號狀態下的用戶會被列出。

  • Usernames
    如果指定,只有這個屬性里包含了用戶名的用戶會被列出。這個屬性的值應該是以逗號間隔用戶名。

  • QueryType(Default, Search, ActiveUsers, ActiveModerators, CurrentUserFavorites, AccessingUserFavorites, UsersWatchingAccessingUser)
    QueryType定義了用于獲取用戶列表的方法。"Default"將會單獨以控件的上下文獲取用戶列表。
    注意當QueryType是"ActiveUsers", "ActiveModerators", "CurrentUserFavorites", "AccessingUserFavorites" 或 "UsersWatchingAccessingUser" 時,很多過濾選項不可用。

  • PagerID
    分頁器(或分頁組,PagerGroup)的控件ID。這個控件用來在用戶列表的不同頁之間導航。
    僅管這只是單個控件的ID,但還是可以通過一個輔助控件(PagerGroup)使用多個分頁器給單個列表進行導航。

  • 盡管這只是UserList的QueryOverrides屬性的實現,大多數列表也都支持PageIndex,PageSize,以及PagerID。每個列表暴露了與它所包含的數據相關的選項,這些選項可以通過智能提示方便地發現。例如,帖子列表(WeblogPostList, ForumPostList, EntityList, 以及GalleryPostList),通過它們的QueryOverrides內置屬性,暴露了與具體應用相關的ThreadQuery實現。總體上來說,API提供的數據加載選項,大多數或者全部可以通過QueryOverrides使用(但是不需要編寫C#代碼)。

    UserList控件的一個簡單實例:

    <CSControl:UserList?runat="server"?ShowHeaderFooterOnNone="false">
    ???
    <QueryOverrides?QueryType="ActiveUsers"?SortBy="RecentPosts"?SortOrder="Descending"?PageSize="10"?/>
    ??
    <HeaderTemplate>
    ?????
    <ol>
    ??
    </HeaderTemplate>

    ???
    <ItemTemplate>
    ?????
    <CSControl:UserData?Property="DisplayName"?runat="server"?Tag="LI"?LinkTo="PostsSearch"?/>
    ??
    </ItemTemplate>

    ???
    <NoneTemplate>
    ????? There?are?no?active?users!
    ??
    </NoneTemplate>

    ???
    <FooterTemplate>
    ?????
    </ol>
    ??
    </FooterTemplate>
    </CSControl:UserList>
    將會列出10個最后發帖的在線用戶的昵稱(鏈接到對用戶帖子的搜索)。如果沒有用戶在線,將會輸出消息“There are no active users!”。

    注意<CSControl:UserData />控件在這個例子里顯示了列表中的當前用戶的數據。UserData控件隱式的從UserList控件獲取當前用戶。這個例子中,沒有必要設置UserList或UserData的DataSource屬性。

    除了QueryOverrides里的特定選項以外,所有的Chameleon列表控件都以同樣的方式運作。在智能提示的幫助下,定義列表以及瀏覽列表選項非常輕松。

    如果你有任何關于Chameleon的問題,請通過我的聯系表單或添加評論發送給我。我會在這一系列的最后一篇文章里回答它們。

    這個系列的下一篇文章里,我會討論表單控件。
    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的[翻译]Chameleon介绍(3) : 列表控件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。