六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

使用 ASP+ 下文綁定控件(中)

[摘要]Repeater1Page 類覆蓋了 Page 類的 OnLoad 方法。此表示在對該頁 的首次請求中調用 DataBind。這將導致對這些頁上的數據綁定表達式求 值并使 repeater 控件列舉...
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();
      }
    }
  }

  public sealed class Person {
    private string name;
    private Color favoriteColor;

    public Person(string name, Color favoriteColor) {
       this.name = name;
       this.favoriteColor = favoriteColor;
    }

    public Color FavoriteColor {
      get { return favoriteColor; }
    }
    public string Name {
      get { return name; }
    }
  }
}

  在此頁中,控件的 DataSource 屬性是通過程序設置的,與在aspx文
件中聲明性地設置相對。兩種方法的結果相同。無法選擇哪種方法,都必
須調用 DataBind 方法,以便控件可以列舉其數據源并創建它要表示的項
目。

  此示例中所用的數據源是 Person 對象的一個簡單數組。由于每個數
組都實現ICollection方法,所以數組適合用作數據源。這顯示了將數據
結構和類型用作數據源時可獲得的靈活程度。

DataList1 示例介紹了下列概念:

●在模板中定義豐富的 HTML UI
●使用簡單數組作為數據源
●通過程序設置數據源
●數據綁定語法中所允許的各種表達式

DataGrid 控件

  DataGrid 控件使您可以生成數據源格式豐富的列表表示。此外,它
還支持隨其它操作選擇項目。

  本節的四個示例使用包含有關書名信息(標題、標題ID、作者、價格
和出版日期)的表。全部數據都用TitlesDB.xml中的XML予以維持。在建
立頁面來表示此表的內容并選擇書籍時,這些示例遵循增量方法。代碼列
表包含黑體文本,以表明一個示例構建于以前示例時所作的更改。

截自 TitlesDB.xml:

〈root〉
〈schema id="DocumentElement" targetNamespace=""
    xmlns=http://www.w3.org/1999/XMLSchema
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"〉
  〈element name="Title"〉
    〈complexType content="elementOnly"〉
      〈element name="title_id" type="string"〉〈/element〉
      〈element name="title" type="string"〉〈/element〉
      〈element name="au_name" type="string"〉〈/element〉
      〈element name="price" msdata:DataType="System.
      Currency"
           minOccurs="0"
           type="string"〉〈/element〉
      〈element name="pubdate" type="timeInstant"〉
      〈/element〉
    〈/complexType〉
    〈unique name="TitleConstraint" msdata:PrimaryKey="True"〉
      〈selector〉.〈/selector〉
      〈field〉title_id〈/field〉
    〈/unique〉
  〈/element〉
〈/schema〉
〈DocumentElement〉
  〈Title〉
    〈title_id〉BU1032〈/title_id〉
    〈title〉The Busy Executive's Database Guide〈/title〉
    〈au_name〉Marjorie Green〈/au_name〉
    〈price〉19.99〈/price〉
    〈pubdate〉1991-06-12T07:00:00〈/pubdate〉
  〈/Title〉
  ...
〈/DocumentElement〉
〈/root〉

  在典型的Web應用程序中,為了獲得最大的可伸縮性和性能上的好處,
很可能會使用 Web服務或商業對象來存取數據。為了簡化這些示例并將注
意力集中在使用 DataGrid 而不是數據存取上,我們選擇在應用程序啟動
時一次性加載數據,并在 Global.asax 中的 ASP 應用程序狀態中高速緩
存所得的DataSet,如下所示。

截自 Global.asax:

public void Application_OnStart() {
  FileStream fs = null;
  DataSet ds = null;

  try {
    fs = new FileStream(Server.MapPath("TitlesDB.xml"),
    FileMode.Open,
              FileAccess.Read);
    ds = new DataSet();

    // 將 xml 文件中的數據加載到 DataSet 中
    ds.ReadXml(fs);
  } finally {
    if (fs != null) {
      fs.Close();
      fs = null;
    }
  }

  // 將數據集高速緩存到應用程序狀態中,以便在單個頁面中使用
  Application["TitlesDataSet"] = ds;
}

DataGrid1

  DataGrid1說明DataGrid的基本用法,說明控件如何用最少的用戶代
碼生成表示來提供豐富的功能。

截自 DataGrid1.aspx:

〈%@ Page language="C#" src="DataGrid.cs" inherits="Samples.Data
GridPage"%〉
...

〈asp:DataGrid runat=server id="titlesGrid"〉
〈/asp:DataGrid〉

  上面的.aspx 文件顯示在不設置 DataGrid 控件任何屬性的情況下對
其進行聲明。

DataGrid.cs:

namespace Samples {
  ...

  public class DataGridPage : Page {
    protected DataGrid titlesGrid;

    public ICollection GetTitlesList() {
      // 從在應用程序狀態中高速緩存的 DataSet 中檢索標題列
      表。
      DataSet titlesDataSet = (DataSet)Application["Titles
      DataSet"];

      if (titlesDataSet != null) {
        return titlesDataSet.Tables["Title"].DefaultView;
      }
      else {
        return null;
      }
    }

    private void LoadTitlesGrid() {
      // 從數據庫中檢索數據
      ICollection titlesList = GetTitlesList();

      // 設置控件的數據源
      titlesGrid.DataSource = titlesList;

      // 并使它用此數據源構建其項目
      titlesGrid.DataBind();
    }

    protected override void OnLoad(EventArgs e) {
      base.OnLoad(e);

      if (!IsPostBack) {
        // 首次請求此頁
        LoadTitlesGrid();
      }
    }
  }
}

  .cs文件包含用于此頁的代碼。此代碼與DataList1示例中使用的代碼
功能相同。在對此頁的首次請求中,它覆蓋 OnLoad 方法以檢索數據并在
調用DataBind之前設置控件的DataSource屬性。這將使DataGrid創建其項
目,這些項目是表中必要的行。在回傳處理的過程中,DataGrid從狀態
(該狀態包括在上一次請求中所保存的單元格內容)重新創建項目。

  此示例說明了 DataGrid 控件的 AutoGenerateColumns 屬性的功能。
此屬性的默認值為 true。當設置為 true時,DataGrid將使用reflection
檢查其數據源和對象,并為每個公用屬性或字段創建一個列。在此示例中,
控件表示“標題”表中當前的所有字段。這一功能允許用最少的用戶代碼
快速而容易地生成任何數據源的列表表示。

  每個自動生成列的類型都是BoundColumn。這種列類型將與其關聯的
屬性值轉換為要用作表單元格文本的字符串。

DataGrid2

  DataGrid2說明具有在.aspx文件中定義的Columns集合的DataGrid。

摘自 DataGrid2.aspx:

〈%@ Page language="C#" src="DataGrid.cs" inherits="Samples.Data
GridPage"%〉
...

〈asp:DataGrid runat=server id="titlesGrid"
   AutoGenerateColumns="false"〉
 〈property name="Columns"〉
  〈asp:BoundColumn headerText="Title" DataField="title"/〉
  〈asp:BoundColumn headerText="Author" DataField="au_name"/〉
  〈asp:BoundColumn headerText="Date Published" DataField="
  pubdate"/〉
  〈asp:BoundColumn headerText="Price" DataField="price"/〉
 〈/property〉
〈/asp:DataGrid〉

  此.aspx文件顯示了一個具有用戶指定的列集合的 DataGrid 控件。
此示例使用與 DataGrid1 相同的有代碼支持的文件,因為不需要更改任
何代碼。

  DataGrid的AutoGenerateColumns屬性被設置為假,從而阻止控件自
動生成列,而讓用戶負責定義將要在表中表示的列。

有許多好處:
●您可控制列的順序。以聲明的順序表示列。另一方面,自動生成的列是
按用映像檢索到的順序表示的,此順序不必與代碼中的列順序或數據庫表
本身的列順序相匹配。
●可以用列的headerText屬性來指定每列的標頭。在前一個示例中,列標
頭指明了字段名,這可能并不合適。當在此模式下使用控件時,Columns
還提供其它可設置的屬性。
●自動生成的列的類型始終是 BoundColumn。指定列集合使用戶可以控制
每列的類型。





主站蜘蛛池模板: 特黄视频免费看 | 伊人狠狠色丁香婷婷综合下载 | 午夜在线视频 | 一级做a爰性色毛片免费 | 亚洲免费观看在线视频 | 日本草草视频 | 在线天堂最新版资源 | 伊在线视频 | 日日噜噜噜夜夜爽爽狠狠 | 色综合手机在线 | 青草青青在线视频 | 午夜桃花 | 日本视频免费 | 人人揉人人爽五月天视频 | 在线看片日本 | 又粗又黄又猛又爽大片app | 亚洲精品国产v片在线观看 亚洲精品高清在线观看 | 色综合久久88色综合天天小说 | 青春草在线观看精品免费视频 | 亚洲图片国产日韩欧美 | 午夜视频在线观看免费视频 | 日韩特级| 日本一区二区在线 | 青草视频在线观看免费资源 | 武则天一级淫片免费 | 亚洲男人网站 | 日韩在线欧美 | 日本男人天堂网 | 亚洲视频在线看 | 日韩在线aⅴ免费视频 | 三级黄色片在线播放 | 天天透天天射 | 欧美在线高清brazzers在线 | 中文字幕字幕乱码熟 | 日本三级精品 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠扒开双腿 | 婷婷综合亚洲 | 日韩视频免费在线 | 日本性网址 | 欧美视频日韩视频 | 亚洲国产成人久久一区二区三区 |