DataBinding?資料繫結?資料綁定? #4--繫結運算式(DataBinding Expression)原來可以這樣用?(DataSet / DataReader)

今天看到一本書的範例,發現繫結運算式(DataBinding Expression)也能這樣用
於是自己作一個簡單的學習記錄





 

之前分享過幾篇文章:

 

 

這一系列 (DataBinding) 的文章,已經集結出書。

下集。   ASP.NET 專題實務 (II) -- 範例應用與 4.0 新功能

 

 

 

在 GridView / ListView這種大型控制項(資料繫結控制項)裡面,只要作了「樣版(Template)」,

我們就會發現一些Web控制項可以跟資料庫的各個欄位結合,大多寫成

  • <%# Bind("欄位名稱") %> ,就是雙向繫結。資料可以修改。
  • 或是<%# Eval("欄位名稱") %> ,就是單向繫結,資料只能用來展示。

 例如下面的範例:

01 <asp:GridView ID="GridView1" runat="server" DataKeyNames="id" DataSourceID="SqlDataSource1">
02  
03             <Columns>
04                 <asp:TemplateField HeaderText="分類" SortExpression="class">
05                     <EditItemTemplate>
06                         <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1"
07                             DataTextField="class" DataValueField="class" SelectedValue='<%# Bind("class") %>'>
08                         </asp:DropDownList>
09                     </EditItemTemplate>
10                     <ItemTemplate>
11                         <asp:Label ID="Label1" runat="server" Text='<%# Bind("class") %>'></asp:Label>
12                     </ItemTemplate>
13                 </asp:TemplateField>
14  
15 .....以下省略....
16 </asp:GridView>

 

 

今天看書的時候,又發現繫結運算式(Data Binding Expression)  原來可以這樣用 

 

這邊要分享兩個小範例,可能不太實用。各位參考一下即可。

自己寫ADO.NET程式,透過繫結運算式,傳到前端HTML畫面的 Web控制項裡面。

-------------------------------------------------------------------------------------------------------

  

HTML設計畫面都一樣

各位可以看看下面兩個 Web控制項,使用了 <%# DBInit()%>

01         <asp:TextBox ID="TextBox1" runat="server" Height="200px"  
02                  TextMode="MultiLine"  
03                  Width="350px" Text="<%# DBInit()%>"></asp:TextBox>
04      <br />
05      <br />
06  
07     <asp:DropDownList ID="DropDownList1" runat="server"  
08             DataSource="<%# DBInit()%>" DataTextField="title"  
09             DataValueField="id">
10     </asp:DropDownList>

 

-------------------------------------------------------------------------------------------------------

後置程式碼如下(VB語法) 

1. DataSet 版

01     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
02         Page.DataBind()  '==重點在此!沒這段的話,不會運作!! 
03     End Sub

04 
05 
06     Public Function DBInit() As DataSet
07         '----連結資料庫---- 
08         Dim Conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString)
09         Dim myAdapter As SqlDataAdapter
10         myAdapter = New SqlDataAdapter("select top 10 id, title from test", Conn)
11 
12         Dim ds As New DataSet()
13 
14         'Conn.Open()   '---- 不用寫,DataAdapter會自動開啟 
15         myAdapter.Fill(ds, "test")    '---- 這時候執行SQL指令。取出資料,放進 DataSet。 
16         'Conn.Close()   '---- 不用寫,DataAdapter會自動關閉 
17 
18         Return ds
19     End Function

 

 執行結果:

    

 

 

 

2. DataReader 版

01     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
02         Page.DataBind()  '==重點在此!沒這段的話,不會運作!! 
03     End Sub

04 
05 
06     Public Function DBInit() As SqlDataReader
07         
08         Dim Conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString)
09         Dim dr As SqlDataReader = Nothing
10         Dim cmd As SqlCommand = New SqlCommand("select top 10 id, title from test", Conn)
11         Conn.Open()  
12         dr = cmd.ExecuteReader()  
13 
14         Return dr
15 
16         cmd.Cancel()
17         dr.Close()
18         Conn.Close()
19         Conn.Dispose()
20     End Function

 

 

最重要的地方,還是那一行程式 --  Page.DataBind()

沒有作 DataBind()的話,那些繫結運算式(<%#Bind("xxx")%>)是不會動作的!

 

我臨時還想不到這樣的範例,可以用在哪些地方,

但畢竟也是一個有趣的用法。

於是自己作一個簡單的學習記錄

 

微軟官方文件如下:

 

上面的 微軟MSDN網站,有一段重點,解釋了上面的範例,

為何要強調 Page.Databind()。請看:

      DataBinding?資料繫結?資料綁定? #4.1 -- [觀念補充]為何大型控制項不需要明確呼叫 .DataBind()方法?

 

 

2010/10/12補充:

以上面的方法來作另外一個習題,卻發現另外一個有趣的東西,

請看: [習題]DataBinding?資料繫結?資料綁定? #6 -- 傷腦筋的 GridView加總、小計

          文章內容的段落?分行?分段?換行?#2 (DetailsView、FormView為例) DataBinding Expression

 

 

 作者出版的書籍(ASP.NET專題實務 II   -- 範例應用與4.0新功能

                             是市面上唯一以專文介紹DataBinding的書籍)

 2010年,上市不到一年,已經熱銷四刷。

 2011年,下集(第二版)隆重上市!     內含 VB / C#雙語法,書厚 936

 

 

 

完成後,請繼續觀賞本系列的第五篇文章  --

DataBinding?資料繫結?資料綁定? #5--繫結運算式 與 ListView的HyperLink(超連結)

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估