今天看到一本書的範例,發現繫結運算式(DataBinding Expression)也能這樣用
於是自己作一個簡單的學習記錄
之前分享過幾篇文章:
- DataBinding?資料繫結?資料綁定?
- DataBinding?資料繫結?資料綁定? #1--DataSourceID與DataSource?
- DataBinding?資料繫結?資料綁定? #2--DataSet + 繫結運算式(DataBinding Expression)
- DataBinding?資料繫結?資料綁定? #3--以DropDownList為例
這一系列 (DataBinding) 的文章,已經集結出書。
下集。 ASP.NET 專題實務 (II) -- 範例應用與 4.0 新功能
在 GridView / ListView這種大型控制項(資料繫結控制項)裡面,只要作了「樣版(Template)」,
我們就會發現一些Web控制項可以跟資料庫的各個欄位結合,大多寫成
- <%# Bind("欄位名稱") %> ,就是雙向繫結。資料可以修改。
- 或是<%# Eval("欄位名稱") %> ,就是單向繫結,資料只能用來展示。
例如下面的範例:
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()%>
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 版
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 版
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")%>)是不會動作的!
我臨時還想不到這樣的範例,可以用在哪些地方,
但畢竟也是一個有趣的用法。
於是自己作一個簡單的學習記錄
微軟官方文件如下:
- 概觀 http://msdn.microsoft.com/zh-tw/library/ms178366.aspx
- 語法 http://msdn.microsoft.com/zh-tw/library/bda9bbfx.aspx
上面的 微軟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 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
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 MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。