• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用Repeater控件顯示數據

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    如果你正在使用ASP.NET,你一定對DataGrid控件非常熟悉。DataGrid控件提供了各種特性,通過這些特性可以很容易地在一個Web頁面上以列表形式顯示數據。但是,如果你不想使用HTML表格形式呢?此時,可以使用一個DataGrid的一個鮮為人知的兄弟控件,即Repeater

        如果你正在使用ASP.NET,你一定對DataGrid控件非常熟悉。DataGrid控件提供了各種特性,通過這些特性可以很容易地在一個Web頁面上以列表形式顯示數據。但是,如果你不想使用HTML表格形式呢?此時,可以使用一個DataGrid的一個鮮為人知的兄弟控件,即Repeater控件。Repeater控件提供顯示你所需要數據的靈活性。

    Repeater控件是什么?
     
    Repeater是一個可重復操作的控件,也就是說,它通過使用模板顯示一個數據源的內容,而你可以很容易地配置這些模板。Repeater包含如標題和頁腳這樣的數據,它可以遍歷所有的數據選項并應用到模板中。

    與DataGrid和DataList控件不同,Repeater控件并不是由WebControl類派生而來。所以,它不包括一些通用的格式屬性,比如控制字體,顏色,等等。然而,使用Repeater控件,HTML(或者一個樣式表)或者ASP.NET類可以處理這些屬性。

    HTML在哪里?
    Repeater控件與DataGrid (以及DataList)控件的主要區別是在于如何處理HTML。ASP.NET建立HTML代碼以顯示DataGrid控件,但Repeater允許開發人員決定如何顯示數據。所以,你可以選擇將數據顯示在一個HTML表格中或者一個順序列表中。這主要取決于你的選擇,但你必須將正確的HTML插入到ASP.NET頁面中。

    模板與DataList一樣,Repeater控件只支持模板。以下的模板可供選擇:

    AlternatingItemTemplate: 指定如何顯示每一其它選項。
    ItemTemplate: 指定如何顯示選項。(AlternatingItemTemplate可以覆蓋這一模板。)
    HeaderTemplate: 建立如何顯示標題。
    FooterTemplate: 建立如何顯示頁腳。
    SeparatorTemplate: 指定如何顯示不同選項之間的分隔符。
    你可以使用這些模板來顯示你希望的數據。唯一具有強制性的模板是ItemTemplate,所有其它的模板都是具有選擇性的。

    數據
    對于處理一個數據源,Repeater控件具有與DataGrid與DataList相同的屬性:

    DataMember:獲得或者設置與 Repeater 控件綁定的相應DataSource屬性的表格。

    DataSource:獲得或者設置為 Repeater 顯示提供數據的數據源。

    除此之外,還有一個Items屬性,你可以通過這一屬性編程訪問Repeater數據中單一選項。它返回一個RepeaterItemCollection對象,為一組RepeaterItem對象的集合,代表 Repeater 數據的每一行。

    ASP.NET Web數據控件還有其它一個共性:它們都使用DataBind方法來生成用戶界面。調用這一方法可以返回并顯示數據(假設DataSource和DataMember屬性設置正確)。在查看DataBind方法之前,我們先看看如何在一個Web頁面中使用一個Repeater控件。

    使用Repeater控件
    使用Repeater控件的第一步驟是決定我們將要使用的數據源和字段。例如,我們將要使用SQL Server Northwind數據庫中的Employees列表。Web頁面將顯示職工的完整名字,地址,以及電話號碼。HTML將使用DIV標記,用 Repeater 模板來分隔內容。下面是 Web 頁面的 HTML 內容:

    <%@ Page language="c#" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <html><head>
    <title>Builder.com Repeater Example</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <style>
    .alternate {
    FONT-WEIGHT: bold;
    COLOR: black;
    FONT-FAMILY: Verdana, 'Times New Roman';
    BACKGROUND-COLOR: yellow
    }
    .row {
    FONT-WEIGHT: bold;
    COLOR: black;
    FONT-FAMILY: Verdana, 'Times New Roman';
    BACKGROUND-COLOR: white
    }
    .footer {
    FONT-WEIGHT: bold;
    COLOR: red;
    FONT-FAMILY: Verdana, 'Times New Roman';
    BACKGROUND-COLOR: gray
    }
    .header {
    FONT-WEIGHT: bold;
    COLOR: yellow;
    FONT-FAMILY: Verdana, 'Times New Roman';
    BACKGROUND-COLOR: gray
    }
    .box {
    BORDER-RIGHT: blue groove;
    BORDER-TOP: blue groove;
    DISPLAY: block;
    VERTICAL-ALIGN: baseline;
    OVERFLOW: auto;
    BORDER-LEFT: blue groove;
    CURSOR: wait;
    BORDER-BOTTOM: blue groove;
    FONT-FAMILY: verdana;
    TEXT-ALIGN: center
    }
    body {
    background: #333;
    }
    </style>
    <script language="C#" runat="server">
    private void Page_Load(object sender, System.EventArgs e) {
    if (!IsPostBack) {
    DataSet dset = new DataSet();
    string conn = "server=(local);Initial Catalog=Northwind;UID=ctester;PWD=password";
    string qry = "SELECT firstname, lastname, address, city, region, postalcode,
    homephone FROM employees";
    SqlDataAdapter sda = new SqlDataAdapter(qry, conn);
    sda.Fill(dset);
    Repeater1.DataSource = dset.Tables[0].DefaultView;
    Repeater1.DataBind();
    } }
    </script></head>
    <body MS_POSITIONING="GridLayout" bgColor="#00clearcase/" target="_blank" >cc99">
    <form id="Form1" method="post" runat="server">
    <div class="box">
    <asp:Repeater id="Repeater1" runat="server">
    <HeaderTemplate>
    <div class="header" id="header">Northwind Employees</div>
    </HeaderTemplate>
    <SeparatorTemplate><hr /></SeparatorTemplate>
    <ItemTemplate><div class="row">
    <%# ((DataRowView)Container.DataItem)["FirstName"] %>
    <%# ((DataRowView)Container.DataItem)["LastName"] %><br>
    <%# ((DataRowView)Container.DataItem)["Address"] %><br>
    <%# ((DataRowView)Container.DataItem)["City"] %>, 
    <%# ((DataRowView)Container.DataItem)["Region"] %>  
    <%# ((DataRowView)Container.DataItem)["PostalCode"] %><br>
    <%# ((DataRowView)Container.DataItem)["HomePhone"] %>
    </div></ItemTemplate>
    <AlternatingItemTemplate><div class="alternate">
    <%# ((DataRowView)Container.DataItem)["FirstName"] %>
    <%# ((DataRowView)Container.DataItem)["LastName"] %><br>
    <%# ((DataRowView)Container.DataItem)["Address"] %><br>
    <%# ((DataRowView)Container.DataItem)["City"] %>, 
    <%# ((DataRowView)Container.DataItem)["Region"] %>  
    <%# ((DataRowView)Container.DataItem)["PostalCode"] %><br>
    <%# ((DataRowView)Container.DataItem)["HomePhone"] %>
    </div></AlternatingItemTemplate>
    <FooterTemplate><div class="footer">
    <%# ((DataView)Repeater1.DataSource).Count + " employees found." %>
    </div></FooterTemplate>
    </asp:Repeater></div></form></body></html>
     

    可以注意到,每個 Repeater 行中樣式表控制著文字的外觀。除此之外,在網頁內容中還添加了一個文本框。嵌入式 C# 代碼從 Repeater 的數據源中獲取相應的列。每個數據項都被轉換成一個DataRowView對象以便顯示。

    這一頁面并不是使用ASP.NET的“后臺代碼”性質。由于這一原因,頁面引用了兩個System.Data和System.Data.SqlClient空間名稱。這對于使用DataRowView對象和與 SQL Server 交互訪問是必需的。

    當調用頁面時就會觸發Page_Load事件。此時會把數據源連接到 Repeater 控件上,并查詢數據庫。每一Repeater行的代碼從潛在數據源中載入數據,并且Web頁面顯示這些數據。

    這一設計使用了樣式表(以及 HTML div 標記),所以更改外觀只需要更改必要的樣式表代碼。為了進一步地將數據和顯示分離,你可以在一個獨立文件中存儲樣式表,并以一個HTML LINK標記來引用它們。

    一個很好的選擇
    當與其他 ASP.NET 開發者交流時,開發人員對 Repeater 控件知之甚少,這真讓我感到驚訝。雖然它不如DataGrid功能強大,但它在許多場合中仍然提供了出色的靈活性。Repeater 控件缺少編輯和排序功能,但可以通過進一步編程而實現。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>