ASP.NET資料繫結概述

來源:互聯網
上載者:User

此處需要下面的命名空間:

  • System.Data
  • System.Data.SqlClient

使用ASP.NET資料繫結,可以將任何伺服器控制項綁定到簡單的屬性、集合、運算式、方法。

此篇的主要內容:

  • 概要
    1. <%#…%>文法
    2. Page.DataBind與Control.DataBind
  • 資料繫結列表控制項

    • Repeater
    • DataList
    • DataGrid
  • 訪問資料
    • DataSet類
    • DataReader類
  • 清單控制項模板中的綁定
    • DataBinder.Eval方法
    • 顯示轉換
    • ItemDataBound事件

<%#…%>文法

它是 在Web頁面中 使用資料繫結的基礎。

所有資料繫結運算式必須包含在這些字元中

 

可以從多個源進行簡單資料繫結

  • 簡單屬性,例如

 

<%# custId %>


  • 集合
<asp:ListBox id="List1" datasource="<%# myArray %>" runat="server"/>

 

  • 運算式

 

<%# (customer.FirstName + “ “ + customer.LastName) %>

 

  • 方法結果

 

<%# GetBalance(custId) %>


<%#…%>內聯標記 用於 指示 將要把特定資料來源中的資訊 放在 Web頁面的 什麼位置。

 

Page.DataBind與Control.DataBind

在為web頁上的“對象”確定並設定 特定資料來源 後,必須將資料繫結到這些資料來源

這兩種方法的使用方法很相似。主要差別在於:

調用Page.DataBind方法之後,所有資料來源都將綁定到他們的伺服器控制項。通常,可以從Page_Load事件調用Page.DataBind(或DataBind)。

注意:在顯示調用Web伺服器控制項的DataBind方法 或 在調用頁面級的Page.DataBind方法之前不會有任何資料呈現給控制項

 

 

資料繫結列表 控制項

 

 

清單控制項是可以綁定到集合的Web伺服器控制項。可以使用這些控制項以自訂的模板格式顯示資料行。

所有的清單控制項 都有DataSource、DataMember公開屬性,用於綁定到集合。

這些控制項可以將其DataSource屬性綁定到 實現了IEnumerable、ICollection、IListSource介面的任一集合。

 

Repeater控制項

它是 模板化 的資料繫結列表。

Repeater是“無外觀的”(即,它不具有任何內建布局或樣式)因此,必須在控制項的模板中明確聲明所有HTML布局標記、格式標記和樣式標記

 

清單控制項模板中的綁定

可以使用清單控制項中的模板來 綁定 和 自訂資料來源 的各個記錄。

 

下面介紹三種可用於 執行此操作的方法

DataBinder.Eval方法

當 資料來源 處理 從資料庫返回的資料 時,它 可能包含 很多份 資訊。

可以 使用通用的 DataBinder.Eval方法 返回資料

<%# DataBinder.Eval(Container.DataItem,"au_id") %> <%—- “au_id”欄位是從

容器物件的資料來源中返回的

 --%>

顯示轉換

如果需要更多控制項,可以使用顯示轉換

顯示轉換 使用 類型轉換關鍵字。(這些 關鍵字 充當 函數,由 編譯器 產生 內聯代碼)

<%@ Page Language="VB" %>

<%@ Import Namespace="system.data" %>
<%@ Import Namespace="system.data.sqlclient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim conn As New SqlConnection("data source=.;initial catalog=pubs;user=sa;pwd=123")
Dim da As New SqlDataAdapter("select * from authors", conn)
Dim ds As New DataSet
da.Fill(ds)
Dim ds2 As New DataSet
da.Fill(ds2)
Dim ds3 As New DataSet
da.Fill(ds3)
'
r1.DataSource = ds
r2.DataSource = ds2
r3.DataSource = ds3
'
Page.DataBind()
End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="r1" runat="server">
<%--使用DataTable做資料來源 --%>
<ItemTemplate> <%#CType(Container.DataItem, DataRowView)("au_id")%> <br /></ItemTemplate>
</asp:Repeater>
<hr />
<asp:Repeater ID="r2" runat="server">
<%-- 使用DataReader做資料來源 --%>
<%-- <ItemTemplate><%#CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_lname")%></ItemTemplate>
--%>
</asp:Repeater>
<asp:Repeater ID="r3" runat="server">
<ItemTemplate>
<%#CType(Container.DataItem, DataRowView)(0)%><br />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>

 

ItemDataBound事件

可以使用控制項的ItemDataBound事件 綁定資料

將某個項目的資料 綁定到 控制項 時,就會發生此事件。

<%@ Page Language="VB" %>
<%-- 加入命名空間 --%>
<%@ Import Namespace=system.data %>
<%@ Import Namespace=system.data.sqlclient %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
'取得 資料 並 綁定到控制項上
Dim conn As New SqlConnection("data source=.;initial catalog=pubs;user=sa;pwd=123")
Dim da As New SqlDataAdapter("select * from authors", conn)
Dim ds As New DataSet
da.Fill(ds)
rptr.DataSource = ds
rptr.DataBind()
End Sub

Protected Sub rptr_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
'資料儲存在 e.Item.DataItem中,類型是DataRowView
Dim rec As DataRowView
rec = e.Item.DataItem
'取出資料,放在繫結控制項中
If Not IsDBNull(rec) Then
Dim l1 As Label
l1 = e.Item.FindControl("lblAuthorId")
l1.Text = rec("au_id").ToString
End If
End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--第一步先加入控制項--%>
<asp:Repeater ID=rptr runat=server OnItemDataBound="rptr_ItemDataBound">
<ItemTemplate>
<asp:Label ID=lblAuthorId runat=server></asp:Label><br />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.