摘要:[習題]下集第五章LinqDataSource,自訂 Class當作資料來源,兼論 ListView與 GridView的小差異
這個範例是在書本裡面學習來的,與大家分享一下。
O'Relly出版社, Programming ASP.NET 3.5(第四版)
VS 2008 / VS 2010適用
因為這本書提供了 C#的範例
所以我只提供 VB版的範例, 以資區隔
..................................................................................................................................................................
我們自己撰寫下列的 Class當作資料來源,
並且設定兩個屬性與一個方法
02 '==================================
03 Imports System.Collections.Generic '--自己動手加入宣告
04 '==================================
05
06
07 Public Class Class1_BookSample
08
09 '==============================================
10 '-- 提供兩個屬性
11
12 Private m_ISBN As String
13 Public Property ISBN() As String
14 Get
15 Return m_ISBN
16 End Get
17 Set(ByVal value As String)
18 m_ISBN = value
19 End Set
20 End Property
21
22 Private m_Title As String
23 Public Property Title() As String
24 Get
25 Return m_Title
26 End Get
27 Set(ByVal value As String)
28 m_Title = value
29 End Set
30 End Property
31 '==============================================
32
33
34 '-- 提供一個方法
35 Public Shared Function BookList() As List(Of Class1_BookSample)
36 Dim myBookList As New List(Of Class1_BookSample)()
37
38 '-- 使用 New With時,記得屬性名稱需以【.】作為前導字
39 myBookList.Add(New Class1_BookSample() With { _
40 .ISBN = "9789867309662", _
41 .Title = "ASP.NET 4.0專題實務I:入門實戰篇; 松崗出版"})
42
43 myBookList.Add(New Class1_BookSample() With { _
44 .ISBN = "9789866382956", _
45 .Title = "ASP.NET專題實務II:範例應用與4.0新功能; 文魁出版"})
46
47 Return myBookList
48 End Function
49
50
51 End Class
接下來使用 LinqDataSource來擷取資料,並透過 GridView呈現畫面上
HTML畫面只有一個空白的 GridView,什麼設定都沒有
02 '== 自己動手加入宣告
05 Imports System.Collections.Generic
06 Imports System.Linq
07 '==================================
08
09 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
10 '-- 使用自己寫的 Class當作資料來源(/App_Code目錄下的 Class檔案)
11
12 Dim getBookList As List(Of Class1_BookSample) = Class1_BookSample.BookList()
13
14 Dim titles = From b In getBookList Select b.Title
15
16 GridView1.DataSource = titles
17 GridView1.DataBind()
18
19 End Sub
上面這個範例比較簡單,一切都ok。
問題出現在 ListView,這也是此習題有趣的地方
先來看看 ListView的 HTML設定畫面
02 <ItemTemplate>
03 <tr style="background-color:#DCDCDC;color: #000000;">
04 <td>
05 <asp:Label ID="titleLabel" runat="server" Text='<%# Eval("title") %>' />
06 </td>
07 </tr>
08 </ItemTemplate>
09
10 <LayoutTemplate>
11 ......非重點。 省 略......
31 </LayoutTemplate>
32 </asp:ListView>
後製程式碼跟上一個範例一模一樣,只是把 GridView1改成 ListView1而已
但會出現錯誤!!
原來,GridView會自動賦予欄位名稱的值,如下圖的 Item
但是 ListView因為是一個以「樣板」為主的大型控制項,在 DataBinding Expression(資料繫結運算式)裡面
已經事先寫好「欄位名稱」了
這個欄位名稱(title)與 後製程式碼裡面 LINQ語法的 b.Title不一樣,
難怪會報錯!
02 '-- 使用自己寫的 Class當作資料來源(/App_Code目錄下的 Class檔案)
03 Dim getBookList As List(Of Class1_BookSample) = Class1_BookSample.BookList
04
05 Dim titles = From b In getBookList _
06 Select b.Title
07
08 ListView1.DataSource = titles
09 ListView1.DataBind()
10 End Sub
===============================================
這個範例很適合補充在「下集」ASP.NET專題實務 II -- 範例集與 4.0新功能的
第五章 LinqDataSource
這個範例與讀書心得,分享給讀者參考一下。
本文已經收錄在「下集(第二版)」 2011年推出的黑皮書裡面,
如果您對 VB語法不熟悉、或是不習慣
請透過這個網站來轉換 (http://www.developerfusion.com/tools/convert/csharp-to-vb/)
=== 最後要打一下廣告 ==========================
1. 如果您覺得我的描述、寫作方式,符合您的胃口。
2. 如果您看完以後,知道我寫書、介紹一些控制項或是技術........不是「混過去」、「帶過去」而已,而是真真確確地蒐集 "有用的範例",讓您學得更深入!
3. 如果您覺得:我出完書以後,還不定期地提供售後服務,提供補充教材......這樣的互動是 "良性"的,是值得鼓勵的。......已經推出 兩百多篇 補充範例了
4. 如果您(尤其是學生)真的想把基礎學好,而不是 "混"過這一門課就好、而不是寫個(畢業專題的)屍體出來交差(能畢業就好).....那麼.......
請您購買下面的書籍,
東西多到您學不完
上 / 下兩集,兩本書的厚度(我蒐集的各種範例)將近 兩千頁 !!......絕對不會讓您失望
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。