使用 ASP+ 列表繫結控制項(中)

來源:互聯網
上載者:User
asp+|控制項 Repeater1Page 類覆蓋了 Page 類的 OnLoad 方法。此表示在對該頁
  的首次請求中調用 DataBind。這將導致對這些頁上的資料繫結運算式求
  值並使 repeater 控制項列舉資料來源以及建立其項目。僅在首次請求時調用
  DataBind 方法。這之所以能正常工作是因為 repeater能夠在從前一次保
  存狀態的回傳過程中重新建立其項目,而無需資料來源執行個體。
  
    此頁將類型ICollection 的公用屬性顯露出來。這將在設定repeater
  的 DataSource 屬性值的資料繫結運算式中使用。屬性的擷取實現使用包
  含一組SiteInfo對象序列的ArrayList。此屬性是公用的,因為只有頁類
  的公用和保護成員可在資料繫結運算式中使用。
  
    每個SiteInfo 對象有兩個屬性:SiteName 和 SiteURL。當對模板中
  的HyperLink 控制項進行資料繫結時將訪問這些屬性。在此控制項的綁定表達
  式中,Container.DataItem 表示要將特定項綁定到其上的單個 SiteInfo
  對象。DataBinder.Eval(Container.DataItem, "SiteName") 訪問當前
  SiteInfo 對象的 SiteName 屬性。
  
    Repeater1 樣本向您介紹了幾個基本概念:
  
  ●定義模板
  ●模板中的資料繫結文法和資料繫結運算式
  ●將 ArrayList 的 ICollection 表示用作資料來源
  ●在最初處理頁的過程中調用 DataBind 方法
  
  DataList 控制項
  
    DataList控制項是一個樣板化控制項,它提供使用樣式屬性可視化地格式
  化其表示的能力。它也可以產生多欄版面配置。
  
  摘自 DataList1.aspx:
  
  〈%@ Page language="C#" src="DataList1.cs" inherits="Samples.
  DataList1Page"%〉
  ...
  
  〈asp:DataList runat=server id="peopleDataList"
   RepeatColumns="2" RepeatDirection="Vertical" RepeatMode="Table"
   Width="100%"〉
  
   〈property name="AlternatingItemStyle"〉
    〈asp:TableItemStyle BackColor="#EEEEEE"/〉
   〈/property〉
   〈template name="ItemTemplate"〉
    〈asp:Panel runat=server font-size="12pt" font-bold="true"〉
     〈%# ((Person)Container.DataItem).Name %〉
    〈/asp:Panel〉
    〈asp:Label runat=server Width="20px"
     BorderStyle="Solid" BorderWidth="1px" BorderColor="Black"
     BackColor='〈%# ((Person)Container.DataItem).FavoriteColor
     %〉'〉
    〈/asp:Label〉
    
    〈asp:Label runat=server Font-Size="10pt"
     Text='〈%# GetColorName(((Person)Container.DataItem).
     FavoriteColor) %〉'〉
    〈/asp:Label〉
   〈/template〉
  〈/asp:DataList〉
  
  此 .aspx 檔案顯示了用來產生此樣本的 DataList 的聲明。
  
    在此樣本中,DataList 的多欄版面配置是通過將 RepeatColumns 屬性設
  置為“2”來實現的。將RepeatDirection設定為“Vertical”會使項目從
  上到下、然後從左至右排列。相反,值設定為“Horizontal”會導致項目
  從左至右、然後從上到下排列。
  
    aspx文法包含對少數幾種DataList的樣式屬性的設定。在此樣本中,
  DataList的Width被設定為其父級的100%。設定具灰色背景的Alternating
  ItemStyle是為了獲得帶有條紋的外觀。此樣本還說明模板可以包含任意
  複雜的控制項定義,以滿足在每個項目內獲得理想布局的需要。
  
    最後此模板中的資料繫結運算式通過將Container.DataItem轉換為其
  類型來使用前期綁定。這不會招致與使用DataBinder.Eval(如 Repeater1
  中所示)相關聯的後期綁定的代價。但是,這種方法可能會產生可讀性較
  差的運算式。以下樣本還給出了一個調用GetColorName方法(該方法是在
  本頁有代碼支援的檔案中實現的)的運算式樣本。
  
  DataList1.cs:
  
  namespace Samples {
    ...
  
    public class DataList1Page : Page {
      protected DataList peopleDataList;
  
      protected string GetColorName(Color c) {
        return
         TypeDescriptor.GetConverter(typeof(Color)).Convert
         ToString(c);
      }
  
      private void LoadPeopleList() {
        // 建立資料來源
        Person[] people = new Person[] {
          new Person("Nikhil Kothari", Color.Green),
          new Person("Steve Millet", Color.Purple),
          new Person("Chris Anderson", Color.Blue),
          new Person("Mike Pope", Color.Orange),
          new Person("Anthony Moore", Color.Yellow),
          new Person("Jon Jung", Color.MediumAquamarine),
          new Person("Susan Warren", Color.SlateBlue),
          new Person("Izzy Gryko", Color.Red)
        };
  
        // 設定控制項的資料來源
        peopleDataList.DataSource = people;
  
        // 並使該控制項用此資料來源構建其項目
        peopleDataList.DataBind();
      }
  
      protected override void OnLoad(EventArgs e) {
        base.OnLoad(e);
  
        if (!IsPostBack) {
          // 首次請求此頁
          LoadPeopleList();



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.