![ASPNET35開發(fā)大全第8章課件_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/31/0b473f7b-c211-49cb-a3cf-72d7df5ca4f8/0b473f7b-c211-49cb-a3cf-72d7df5ca4f81.gif)
![ASPNET35開發(fā)大全第8章課件_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/31/0b473f7b-c211-49cb-a3cf-72d7df5ca4f8/0b473f7b-c211-49cb-a3cf-72d7df5ca4f82.gif)
![ASPNET35開發(fā)大全第8章課件_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/31/0b473f7b-c211-49cb-a3cf-72d7df5ca4f8/0b473f7b-c211-49cb-a3cf-72d7df5ca4f83.gif)
![ASPNET35開發(fā)大全第8章課件_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/31/0b473f7b-c211-49cb-a3cf-72d7df5ca4f8/0b473f7b-c211-49cb-a3cf-72d7df5ca4f84.gif)
![ASPNET35開發(fā)大全第8章課件_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/31/0b473f7b-c211-49cb-a3cf-72d7df5ca4f8/0b473f7b-c211-49cb-a3cf-72d7df5ca4f85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第8章Web窗體的數(shù)據(jù)控件在了解了 ADO.NET基礎(chǔ)后,就可以使用 ADO.NET提供的對象進行數(shù)據(jù)庫開發(fā)和操作。ASP.NET還提供了一些 Web窗體的數(shù)據(jù)控件,開發(fā)人員能夠智能的配置與數(shù)據(jù)庫的連接,而不需要手動的編寫 數(shù)據(jù)庫連接。ASP.NET不僅提供了數(shù)據(jù)源控件,還提供了能夠顯示數(shù)據(jù)的控件,簡化了數(shù)據(jù)顯示的開發(fā), 開發(fā)人員只需要簡單的修改模板就能夠?qū)崿F(xiàn)數(shù)據(jù)顯示和分頁。8.1 數(shù)據(jù)源控件數(shù)據(jù)源控件很像 ADO.NET中的Connection對象,數(shù)據(jù)源控件用來配置數(shù)據(jù)源,當數(shù)據(jù)控件綁定數(shù) 據(jù)源控件時,就能夠通過數(shù)據(jù)庫源控件來獲取數(shù)據(jù)源中的數(shù)據(jù)并顯示。而無需通過程序?qū)崿F(xiàn)數(shù)據(jù)源代碼 的編寫。
2、8.1.1 SQL 數(shù)據(jù)源控件(SqlDataSource )SqlDataSource控件代表一個通過ADO.NET 連接到 SQL數(shù)據(jù)庫提供者的數(shù)據(jù)源控件。并且SqlDataSource能夠與任何一種ADO.NET 支持的數(shù)據(jù)庫進行交互,這些數(shù)據(jù)庫包括SQL Server、ACCESS、Oledb、Odbc 以及 Oracle。SqlDataSource控件能夠支持數(shù)據(jù)的檢索、插入、更新、刪除、排序等,以至于數(shù)據(jù)綁定控件可以在 這些能力被允許的條件下自動的完成該功能,而不需要手動的代碼實現(xiàn)。并且SqlDataSource控件所屬的頁面被打開時,SqlDataSource控件能夠自動的打開數(shù)
3、據(jù)庫,執(zhí)行 SQL語句或存儲過程,返回選定的 數(shù)據(jù),然后關(guān)閉連接。SqlDataSource控件強大的功能極大的簡化了開發(fā)人員的開發(fā),縮減了開發(fā)中的代碼。(1是SqlDataSource控件也有一些缺點,就是在性能上不太適應大型的開發(fā),而對于中小型的開發(fā), SqlDataSource控件已經(jīng)足夠了。1 .建立 SqlDataSource 控件ASP.NET提供的 SqlDataSource控件能夠方便的添加到頁面,當 SqlDataSource控件被添加到 ASP.NET頁面中時,會生成 ASP.NET標簽,示例代碼如下所示。<asp:SqlDataSource ID="Sql
4、DataSource1" runat="server"></asp:SqlDataSource>切換到視圖模式下,點擊SqlDataSource控件會顯式【配置數(shù)據(jù)源 】,單擊【配置數(shù)據(jù)源 連接時,系統(tǒng)能夠智能的提供SqlDataSource控件配置向?qū)?,如圖 8-1所示。在新建數(shù)據(jù)源后,開發(fā)人員可以選擇是否保存在web.config數(shù)據(jù)源中以便應用程序進行全局配置,通常情況下選擇保存。由于現(xiàn)在沒有連接,單擊【新建連接】按鈕選擇或創(chuàng)建一個數(shù)據(jù)源。單擊后,系 統(tǒng)會彈出對話框用于選擇數(shù)據(jù)庫文件類型,如圖8-2所示。圖 8-1 配置 SqlDataSo
5、urce 控件圖8-2選擇數(shù)據(jù)源當選擇完后,配置信息就會顯式在web.config中。當需要對用戶控件進行維護時,可以直接修改web.config ,而不需要修改每個頁面的數(shù)據(jù)源控件,這樣就方便了開發(fā)和維護。當選擇了數(shù)據(jù)源后,需 要對數(shù)據(jù)源的連接進行配置,這一步與ADO.NET中的Connection對象一樣,就是要與數(shù)據(jù)庫建立連接,當配置好連接后,可以單擊【測試連接】按鈕來測試是否連接成功,如圖8-3和圖8-4所示。圖8-3添加連接 irr11m匈 期試隹愜廁.圖8-4測試連接連接成功后,單擊【確定】按鈕,系統(tǒng)會自動添加連接,如圖8-5所示。連接添加成功后,在web.config 配置文件中
6、,就有該連接的連接字串,代碼如下所示。<connectionStrings><add name="mytableConnectionString" connectionString="DataSource=WIN-YXDGNGPG621;Initial Catalog=mytable; Integrated Security=True" providerName="System.Data.SqlClient" /></connectionStrings>數(shù)據(jù)源控件可以指定開發(fā)人員所需要使用的Sele
7、ct語句或存儲過程,開發(fā)人員能夠在配置Select語句窗口中進行 Select語句的配置和生成,如果開發(fā)人員希望手動編寫Select語句或其他語句,可以單擊【指定自定義 SQL語句或存儲過程】按鈕進行自定義配置,Select語句的配置和生成如圖8-6所示。圖8-5成功添加連接圖8-6配置使用Select語句對于開發(fā)人員,只需要勾選相應的字段,選擇Where條件和Order By語句就可以配置一個Select語句。但是,通過選擇只能夠查詢一個表,并實現(xiàn)簡單的查詢語。如果要實現(xiàn)復雜的SQL查詢語句,可以單擊【指定自定義 SQL語句或存儲過程】進行自定義SQL語句或存儲過程的配置,如圖 8-7所示,
8、開發(fā)人員選才i了一個 getdetail的存儲過程作為數(shù)據(jù)源。單擊【下一步】按鈕,就需要對相應的字段進行配置,這些字段就像ADO.NET中的參數(shù)化查詢一樣。在數(shù)據(jù)源控件中,也是通過 來表示參數(shù)化變量, 等就需要對參數(shù)進行配置,如圖8-8所示。當需要配置相應的字段,例如配置WHERE語句圖8-7定義自定義語句或存儲過程ZIHJ圖8-8 添加WHERE子句添加WHERE子句時,SQL語句中的值可以選擇,默認值、控件、 Cookie或者是Session等。當配置 完成后,就可以測試查詢,如果測試后顯示的結(jié)果如預期一樣,則可以單擊完成,如圖8-9所示。圖8-9測試查詢并完成完成后,SqlDataSou
9、rce控件標簽代碼如下所示。<asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ ConnectionStrings:mytableConnectionString %>" SelectCommand="SELECT TITLE, ID FROM mynews”></asp:SqlDataSource>2 .配置 SqlDataSource 控件屬性SqlDataSource控件還包括一些可視化
10、屬性,這些屬性包括刪除查詢(DeleteQuery)、插入查詢(InsertQuery)、檢索查詢(SelectQuery)以及更新查詢(UpdateQuery)。當需要使用可視化屬性時, 需選擇【使用自定 SQL語句或存儲過程】復選框,在導航中可以使用查詢生成器生成查詢語句,如圖 8-10所示。圖8-10自定義語句或存儲過程選擇【查詢生成器】按鈕,系統(tǒng)會提示選擇相應的表并通過相應的表來生成查詢語句,如圖8-11和圖8-12所示。圖8-11選擇相應的表圖8-12使用查詢生成器配置相應的查詢語句后,SqlDataSource控件的HTML代碼如下所示。<asp:SqlDataSource
11、ID="SqlDataSource1" runat="server"ConnectionString="<%$ ConnectionStrings:mytableConnectionString %>"InsertCommand="INSERT INTO mynews(ID) VALUES ('control title')"SelectCommand="SELECT TITLE, ID FROM mynews”></asp:SqlDataSource>上述代
12、碼自動增加了一個 InsertCommand并指定了 Insert語句。開發(fā)人員可以為 SqlDataSource控件 指定四個命令參數(shù): SelectCommand、UpdateCommand、DelectCommad 和 InsertCommand。每個者B是數(shù) 據(jù)源控件的單一屬性,開發(fā)人員可以配置相應的語句指定Select、Update > Delete以及Insert方法。SqlDataSource控件同時能夠使用緩存來降低頁面與數(shù)據(jù)庫之間連接頻率,這樣可以避免開銷很大的查詢操作,以及建立連接和關(guān)閉連接操作。只要數(shù)據(jù)庫是相對穩(wěn)定不變的,則可以使用SqlDataSource控件的緩
13、存屬性(EnableCaching)來進行緩存。在默認情況下,緩存屬性( EnableCaching)是關(guān)閉的,需要開發(fā)人員自行設(shè)置緩存屬性。8.1.2 Access 數(shù)據(jù)源控件(AccessDataSource )在上一章中介紹了如何使用ADO.NET中OleDb來連接和讀取 Access數(shù)據(jù)庫。Access數(shù)據(jù)庫是一種桌面級的數(shù)據(jù)庫,當對應用程序性能,以及數(shù)據(jù)庫性能要求不是很高,并且數(shù)據(jù)量不需很大時,可以 考慮選擇Access數(shù)據(jù)庫。SqlDataSource能夠與任何一種 ADO.NET支持的數(shù)據(jù)源進行交互,這些數(shù)據(jù)源包括SQL Server、Access> Oledb、Odbc以
14、及Oracle。但是 Access數(shù)據(jù)庫有專門的數(shù)據(jù)源控件,就是 AccessDataSource。 AccessDataSource控件同配置 SqlDataSource控件基本相同,如圖 8-13所示。與SqlDataSource不同白是,SqlDataSource主要采用的是 ConnectionString屬性連接數(shù)據(jù)庫,而Access 則采用的是 AccessDataSource方式連接數(shù)據(jù)庫。因為 Access數(shù)據(jù)庫是以文件的形式存在于系統(tǒng)中的, 所以主要采用DataFile屬性直接以文件地址的方式進行連接。要連接Access數(shù)據(jù)庫,則必須選擇Access數(shù)據(jù)庫文件,如圖8-14所
15、示。圖8-13選擇數(shù)據(jù)庫圖8-14 選擇Access文件在選才i了 Access數(shù)據(jù)庫文件后,單擊【確定】按鈕,系統(tǒng)就會為開發(fā)人員配置連接字串,在核對無誤后,單擊【下一步】按鈕進入Select語句的配置。同SqlDataSource控件一樣,同樣能夠配置 Select語句或自定義存儲過程,如圖8-15所示。同樣8-15 配置Access數(shù)據(jù)庫的Select語句其他步驟與SqlDataSource相同,當創(chuàng)建完成后, AccessDataSource控件的HTML代碼如下所示。<asp:AccessDataSource ID="AccessDataSource1" ru
16、nat="server" DataFile="/acc.mdb" SelectCommand="SELECT bh, title FROM mytable”> </asp:AccessDataSource>當需要使用Access數(shù)據(jù)庫,推薦將Access數(shù)據(jù)庫文件保存在 App_Data文件夾中。以保證數(shù)據(jù)庫文 件是私有的,因為 ASP.NET不允許直接請求App_Data文件夾。注意:AccessDataSource控件不支持訪問受密碼保護的Access數(shù)據(jù)庫文件,如果需要訪問受密碼保護的Access數(shù)據(jù)庫文件,則需要使用
17、SqlDataSource控件。8.1.3 目標數(shù)據(jù)源控件(ObjectDataSource )大多數(shù)ASP.NET數(shù)據(jù)源控彳%如 SqlDataSource都是在兩層應用程序?qū)哟谓Y(jié)構(gòu)中使用。在該層次 結(jié)構(gòu)中,表示層(ASP.NET網(wǎng)頁)可以與數(shù)據(jù)層(數(shù)據(jù)庫和XML文件等)直接進行通信。但是,常用的應用程序設(shè)計原則是將表示層與業(yè)務邏輯相分離,而將業(yè)務邏輯封裝在業(yè)務對象中。這些業(yè)務對象 在表示層和數(shù)據(jù)層之間形成一層,從而生成一種三層應用程序結(jié)構(gòu)。ObjectDataSource控件通過提供一種將相關(guān)頁上的數(shù)據(jù)控件綁定到中間層業(yè)務對象的方法,為三層結(jié)構(gòu)提供支持。在不使用擴展代碼的情 況下,Obje
18、ctDataSource使用中間層業(yè)務對象以聲明方式對數(shù)據(jù)執(zhí)行選擇、插入、更新、刪除、分頁、 排序、緩存和篩選操作。也就是說,SqlDataSource是兩層模型中使用的.頁面通過直接訪問數(shù)據(jù)庫.。ObjectDataSource用于三層模型中,也就是將中間業(yè)務對象通過其訪問數(shù)據(jù)庫的。然后中間層業(yè)務對象再用在表示層中,例如 在開發(fā)中使用的自定義控件。ObjectDataSource的業(yè)務對象是可以用檢索或更新數(shù)據(jù)的業(yè)務對象,例如Bin或App_Code目錄中定義的對象,選擇業(yè)務對象如圖 8-16所示。圖8-16選擇業(yè)務對象可以創(chuàng)建一個類庫,并在 ASP.NET網(wǎng)站中添加引用,這樣就可以通過Ob
19、jectDataSource對象選擇該類庫中的方法,如圖8-17和圖8-18所示。3飛±1HFr EJiflT «XT- T/限一;炸心ffJ -r r獨=I Aetkv lUktaS "Jr-= * hipxJJ Dtj = ttl.1.七:-ir-z -» H-ipxa .皿“濫22皿珈心b .成:口|匚工事丐Li briwyllS _d CrnjHliH口 引用$ CUssL.圖8-18添加引用圖8-17添加類庫ObjectDataSource 控件對象模型類似于SqlDataSource 控件。ObjectDataSource 公開一個 Type
20、Name屬性,該屬性指定要實例化來執(zhí)行數(shù)據(jù)操作白對象類型,也就是類的名稱。與SqlDataSource的命令屬性類似,同樣 ObjectDataSource包括四個重要屬性,這四個屬性分別為SelectMethod、UpdateMethod、InsertMethod和DeleteMethod ,分別用于指定要執(zhí)行這些數(shù)據(jù)操作關(guān)聯(lián)類型的方法。選擇對象后,就可 以配置 SelectMethod、UpdateMethod、InsertMethod 和 DeleteMethod 屬性的方法。示例代碼如下所示。 public class Class1/創(chuàng)建類庫 public string GetTitl
21、e()/創(chuàng)建方法 name = "title"變量賦值return name;/返回 name public void InsertTitle()創(chuàng)建方法 name = "insert"變量賦值 public string name;/創(chuàng)建共有變量 name ObjectDataSource控件可以使用 Class1中的對象,如圖 8-19所示。圖8-19定義數(shù)據(jù)方法ObjectDataSource控件可以使開發(fā)人員將諸如GridView和DropDownList這樣的用戶界面控件綁定到一個中間層組件。能夠無需編寫任何代碼即可綁定到一個組件,從而極大的簡
22、化用戶界面。與其他的 數(shù)據(jù)源控彳相同,ObjectDataSource控件在運行時可以接受參數(shù),并在參數(shù)集合中對參數(shù)進行管理。每 一項數(shù)據(jù)操作都有一個相關(guān)的參數(shù)集合。對于選擇操作,可以使用SelectParameters集合,對于更新操作,可以使用 UpdateParameters 集合,而給予 InsertParameters、UpdateParameters DeleteParameters 集 合,需要分別確定相應操作所需調(diào)用的方法。8.1.4 LINQ 數(shù)據(jù)源控件(LinqDataSource )語言集成查詢(LINQ )是一種查詢語法,它可定義一組查詢運算符,以便在任何基于.NET的
23、編程語言中以一種聲明性的方式來表示遍歷、篩選和投影操作。數(shù)據(jù)對象可以是內(nèi)存中的數(shù)據(jù)集合,或者是 表示數(shù)據(jù)庫中數(shù)據(jù)的對象。無需為每個操作編寫SQL命令,即可檢索或修改數(shù)據(jù)。使用LinqDataSource控件,開發(fā)人員可以通過在標記文本中設(shè)置屬性從而在ASP.NET網(wǎng)頁中使用LINQ。LinqDataSource控件使用LINQ to SQL來自動生成數(shù)據(jù)命令。LINQ數(shù)據(jù)源可以是 LINQ數(shù)據(jù)庫或數(shù)組等以集合形式表現(xiàn)的數(shù)據(jù)庫,有關(guān) LINQ的知識會有專門的章節(jié)講解,在這里使用數(shù)組作為數(shù)據(jù) 源,示例代碼如下所示。public string口 arr="1","2&q
24、uot;,"3","4"創(chuàng)建數(shù)組在ASP.NET頁面中使用LINQ數(shù)據(jù)源控件可以對 LINQ數(shù)據(jù)源進彳T查詢,LINQ數(shù)據(jù)源控件代碼如 下所示。<asp:LinqDataSource ID="LinqDataSource1" runat="server"></asp:LinqDataSource>創(chuàng)建了 LINQ數(shù)據(jù)源控件,同樣單擊【配置數(shù)據(jù)源】按鈕可以進行LINQ數(shù)據(jù)源控件的數(shù)據(jù)源配置,如圖8-20所示。當選擇上下文對象后,需要配置數(shù)據(jù)選擇,LINQ數(shù)據(jù)源控件同樣支持Group和Where
25、關(guān)鍵字,如圖8-21所示。圖8-20選擇上下文對象圖8-21配置數(shù)據(jù)選擇配置完成后,LINQ數(shù)據(jù)源控件HTML代碼如下所示。<asp:LinqDataSource ID="LinqDataSource1" runat="server"ContextTypeName="ClassLibrary1.Class1" Select="new (Length, Chars)" TableName="arr"></asp:LinqDataSource>LINQ數(shù)據(jù)源控件來當完成LIN
26、Q數(shù)據(jù)源控件(LinqDataSource)的配置后,就可以通過控件綁定 獲取LINQ數(shù)據(jù)庫中白信息。LinqDataSource控件按以下順序應用數(shù)據(jù)操作: Where:指定要返回的數(shù)據(jù)記錄。Order By :排序。Group By :聚合共享值的數(shù)據(jù)記錄。Order Groups By :對分組數(shù)據(jù)進行排序。Select:指定要返回的字段或?qū)傩?。Auto-sort:按用戶選定的屬性對數(shù)據(jù)記錄進行排序。Auto-page:檢索用戶選定的數(shù)據(jù)記錄的子集。ASP.NET 3.5 與LINQ是ASP.NET 3.5中增加的一種語言集成查詢,該控件的高級屬性和方法在 LINQ中會詳細講解。8.1.
27、5 Xml 數(shù)據(jù)源控件(XmlDataSource )Xml數(shù)據(jù)源控件可以讓數(shù)據(jù)綁定控件輕易的連接到XML數(shù)據(jù)源。在只讀方案下通常使用XmlDataSource控件顯示分層 XML數(shù)據(jù),但同樣可以使用該控件顯示分層數(shù)據(jù)和表格數(shù)據(jù)。1 .建立 XmlDataSource 控件與AccessDataScource相同的是,XmlDataSource控件同樣使用 DataFile屬性指定 XML文件并加載XML數(shù)據(jù),如圖8-22所示。數(shù)據(jù)源是 XML文件,單擊【瀏覽】按鈕選擇數(shù)據(jù)文件,如圖 8-23所示。圖8-22配置數(shù)據(jù)源圖8-23選擇XML數(shù)據(jù)源選擇數(shù)據(jù)源后,單擊確定并完成數(shù)據(jù)源的配置即可,配置
28、完成數(shù)據(jù)源后,XmlDataSource控件的HTML代碼如下所示。<asp:XmlDataSourceID="XmlDataSource1" runat="server" DataFile="/xmldate.xml"></asp:XmlDataSource>上述代碼指定了DataFile屬性的所屬的文件,當配置完成后,XmlDataSource控件就可以和數(shù)據(jù)綁定控件結(jié)合使用了。2 . XmlDataSource控件的使用當配置完成XmlDataSource后,就可以和數(shù)據(jù)綁定控件結(jié)合使用。在使用數(shù)據(jù)綁定控
29、件前,先配置 XML數(shù)據(jù)文件,示例代碼如下所示。<?xml version="1.0" encoding="utf-8" ?><news><title> 新聞標題 1</title><time>2008</time><author>guojing</author><content> 這是新聞正文 </content><title> 新聞標題 2</title><time>2008</time&g
30、t;<author>guojing</author><content> 這是新聞正文 </content></news>上述代碼配置了 XML數(shù)據(jù)文件,配置完成后,可以通過數(shù)據(jù)綁定控件來訪問,可以使用 TreeView 控件,示例代碼如下所示。<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1"></asp:TreeView>上述代碼只能夠顯示XML數(shù)據(jù)文件中
31、各個節(jié)點的名稱,并不能顯示各個節(jié)點的值,必須為顯示的節(jié)點做配置。在控件側(cè)邊單擊【 TreeNode數(shù)據(jù)綁定】選項,并選擇相應的列進行節(jié)點配置,如圖 8-24 所示。圖8-24選擇列配置TextFiled配置TextFiled后,各個節(jié)點的值會顯示為 XML數(shù)據(jù)中標簽內(nèi)的值,而XmlDataSource控件的HTML 代碼則會被系統(tǒng)自動替換,示例代碼如下所示。<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1"ImageSet="
32、;Contacts" NodeIndent="10"><ParentNodeStyle Font-Bold="True" ForeColor="#5555DD" /><HoverNodeStyle Font-Underline="False" /><SelectedNodeStyle Font-Underline="True" HorizontalPadding="0px"VerticalPadding="0px&quo
33、t; /><DataBindings><asp:TreeNodeBinding DataMember="title" Text="title" TextField="#InnerText" Value="title" /></DataBindings><NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadd
34、ing="5px" NodeSpacing="0px" VerticalPadding="0px" /></asp:TreeView>運行后,相應的節(jié)點則會顯示為標簽的相應的值,如圖 8-25所示。圖 8-25 XmlDataSource 數(shù)據(jù)綁定XmlDataSource控件一般用于只讀的數(shù)據(jù)方案。數(shù)據(jù)綁定控件顯示XML數(shù)據(jù),還可以通過XmlDataSource來編輯 XML數(shù)據(jù)。但是當XmlDataSource控件加載時,必須使用 DataFile屬性加載,而 不能從Data屬性中指定的XML的字符串進行加載。8
35、.1.6站點導航控件(SiteMapDataSource )為了引導用戶在站點的各個頁面能夠流暢跳轉(zhuǎn),需要在每個頁面加入頁面導航。在ASP的開發(fā)過程中,必須手動的為每個頁面加入導航,這樣不僅加大了開發(fā)的復雜度,也讓代碼的復用性變低。相對 于手動加入導航更好的解決方法則是使用js在各個頁面引用導航, 但是一旦頁面變得很多,可能會導致讓js頁面效率變低。而在ASP.ENT 2.0以后的版本,微軟提供了導航控件讓導航菜單的創(chuàng)建、自定義和維護變得更加的簡單。SiteMapDataSource控件包含來自站點地圖的導航數(shù)據(jù),這些數(shù)據(jù)包括有關(guān)網(wǎng)站中的頁的信息,例如網(wǎng)站頁面的標題、說明信息以及URL等。如果
36、將導航數(shù)據(jù)存儲在一個地方,則可以方便的在網(wǎng)站的導航菜單添加和刪除項。站點地圖提供程序中檢索導航數(shù)據(jù),然后將數(shù)據(jù)傳遞給可顯示該數(shù)據(jù)的數(shù)據(jù)綁定 控件,顯示導航菜單。如果需要使用 SiteMapDataSource控件,用戶必須在 Web.sitemap文件中描述站點的結(jié)構(gòu),示例代碼如下所示。<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns="http: >vsiteMapNode url="" title=" 根目錄"descr
37、iption="根目錄"vsiteMapNode url="SqlDataSource.aspx" title="SqlDataSource.aspx"description="SQL 數(shù)據(jù)庫”/>vsiteMapNode url="AccessDataSource" title="AccessDataSource"description="Access 數(shù)據(jù)庫"/>vsiteMapNode url="LinqDataSource"
38、title="LinqDataSource" description="Linq" />vsiteMapNode url="ObjectDataSource" title="ObjectDataSource"description="Object" />vsiteMapNode url="XmlDataSource" title="XmlDataSource" description="Xml" /></site
39、MapNode></siteMap>上述代碼描述了網(wǎng)站的目錄結(jié)構(gòu),在文件中,必須有一個根為 siteMapNode的元素作為siteMap元 素的自己,并定義以下常用屬性:title :為站點地圖節(jié)點指定一個標題,該標題將顯示為網(wǎng)頁的連接文本。Url :為網(wǎng)頁指定URL。支持相對或絕對路徑。Description :為站點地圖的節(jié)點添加描述,當用戶鼠標移動到該欄目時,則會顯示描述信息。StartFormCurrentNode :當設(shè)置為true時,則可以從該節(jié)點開始檢索站點地圖結(jié)構(gòu)。StartingNodeOffset :當屬性設(shè)置為 2時可以檢索當前地圖結(jié)構(gòu)。SiteMap
40、DataSource控件無需配置,拖放一個TreeView 控件和一個 SiteMapDataSource控件在頁面,指定TreeView數(shù)據(jù)源即可,如圖 8-26所示。仟青SqUDatiSgqrqe.upx AcccsDcrtaScnircrLm 4nsiaSourm ObjeztD ataS-owce XniiDataicniceSi l«4li. I- Sl圖8-26配置數(shù)據(jù)源配置完成后,數(shù)據(jù)綁定控件會自動讀取Web.sitmap文件并生成導航。當使用了 SiteMapDataSource控件后,數(shù)據(jù)綁定控件就能夠綁定SiteMapDataSource控件并自動讀取相應的值并生
41、成導航,當需要對導航進行修改時,只需要修改 Web.sitemap即可,方便了站點導航功能的使用和維護。運行后如圖8-27所示。圖8-27 SiteMapDataSource控件數(shù)據(jù)顯示8.2 重復列表控件(Repeater)重復列表控件(Repeater-)是一個可重復操作的控件。它能夠通過使用模板顯示一個數(shù)據(jù)源的內(nèi)容,而且開發(fā)人員可以輕松的配置這些模板,Repeater控件包括如標題和頁腳這樣的數(shù)據(jù),它可以遍歷所有的數(shù)據(jù)選項并將其應用到模板中。重復列表控件并不是從 WebControl派生出來,重復列表控件可以直接操控HTML文件或者樣式表來編寫模板和控制屬性。重復列表控件支持5種模板,用
42、來顯示相應的界面信息,這5種模板的功能如下所示:AlternatingItemTemplate :指定如何顯示其他選項。ItemTemplate :指定如何顯示選項。HeaderTemplate:建立如何顯示標題。FooterTemplate:建立如何顯示頁腳。SeparatorTemplate:指定如何顯示不同選項之間的分隔符。在上面5種模板中,惟一需要使用的是ItemTemplate模板,其他的模板可以選用。示例代碼如下所示。<asp:Repeater ID="Repeater1" runat="server" DataSourceID=&qu
43、ot;SqlDataSource1"><ItemTemplate><%# Eval("title")%></ItemTemplate></asp:Repeater>“<%#%>”符號之間的語句表示數(shù)據(jù)綁定表達式,可以直接使用數(shù)據(jù)源控件中查詢出來字段。在Repeaater中間,使用ItemTemplate制作模板,在ItemTemplate模板中可以直接使用HMTL制作樣式。在數(shù)據(jù)顯示中,可以直接使用“<%#%>”綁定數(shù)據(jù)庫中的列,例如當數(shù)據(jù)源控件中查詢了一個title列時,則在Repea
44、ter控件中直接使用“ <%#Eval( title")”方式顯式title字段的值。顯示字段有幾種方法,其中“ <%#Eval(字段名稱")>”是最方便的顯示字段的方法,能夠方便的 在模板中嵌入,其他方法還有使用" <%#DataBlinder.Eval(Container.DataItem,字段名稱")%>"方式來綁 定相關(guān)的列。示例代碼如下所示。<asp:Repeater ID="Repeater1" runat="server" DataSourceID=&qu
45、ot;SqlDataSource1"><ItemTemplate><div style="border-bottom:1px dashed #ccc; padding:5px 5px 5px 5px;"><%# Eval("title")%></div></ItemTemplate></asp:Repeater>上述代碼自定義了一個 HTML代碼,增加了一個DIV標簽,該標簽設(shè)置了 CSS屬性border-bottom:1pxdashed #ccc; padding:
46、5px 5px 5px 5px; 。Repeater控件能夠自動的重復該模板。當數(shù)據(jù)庫中的數(shù)據(jù)完畢后,則不再重復,運行結(jié)果如圖 8-28所示。圖 8-28 Repeater控件重復列表控件最常用的事件有ItemCommand、ItemCreated、ItemDataBound。當創(chuàng)建一個項或者一個項被綁定到數(shù)據(jù)源時,將觸發(fā) ItemCreated和ItemDataBound事件。當重復列表控件中有按鈕被激發(fā) 時,會觸發(fā)ItemCommand事件。在ItemCommand中,為了自定義按鈕控件相應事件,開發(fā)人員必須指定 RepeaterCommandEventArgs參數(shù)獲取 CommandAr
47、gument、CommandName和CommandSource三個屬性對應的值,示例代碼如下所 示。<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" onitemcommand="Repeater1_ItemCommand"><ItemTemplate><div style="border-bottom:1px dashed #ccc; padding:5px 5px 5px
48、5px;"><%# Eval("title")%><asp:Button ID="Button1" runat="server“ Text=" 按鈕" CommandArgument='<%# Eval("title")%>'/></div></ItemTemplate></asp:Repeater>上述代碼增加了一個按鈕控件,并配置按鈕控件的命令參數(shù)為數(shù)據(jù)庫中的 件時,則會觸發(fā)ItemCommand
49、,示例代碼如下所示。title的值。當單擊按鈕控protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) Labell.Text ="用戶選擇了 " + e.CommandArgument.ToString();顯式選擇項上述代碼當指定了執(zhí)行按鈕控件觸發(fā)的事件,運行結(jié)果如圖8-29和圖8-30所示。圖 8-29 ItemCommand 事件圖8-30用戶選擇單擊后Repeat控件需要一定的 HTML知識才能顯示數(shù)據(jù)庫的相應信息,雖然增加了一定的復雜度,但是 卻增加了靈活性。
50、Repeat控件能夠按照用戶的想法顯示不同的樣式,讓數(shù)據(jù)顯示更加豐富。8.3 數(shù)據(jù)列表控件(DataList)DataList控件支持各種不同的模板的樣式,通過為 DataList指定不同的樣式,可以自定義 DataList 控件的外觀。與 Repeater控件相同的是,DataList控件同樣也支持自定義 HTML ,但是DataList控件具 備Repeater控件不具有的特性, DataList控件常用屬性如下所示。AltermatingItemStyle :編寫交替行的樣式。EditItemStyle :正在編輯的項的樣式。FooterStyle:列表結(jié)尾處的腳注的樣式。HeaderS
51、tyle:列表頭部的標頭的樣式。ItemStyle :單個項的樣式。SelectedItemStyle :選定項的樣式。SeparatorStyle:各項之間分隔符的樣式。通過修改DataList控件的相應的屬性,能夠?qū)崿F(xiàn)復雜的HTML樣式而不需要通過變成實現(xiàn)。而DataList控件能夠套用自定義格式實現(xiàn)更多的效果,如圖 8-31所示。通過屬性生成器,同樣可以通過勾選相應的項目來生成屬性,這些屬性能夠極大的方便開發(fā)人員制 作DataList控件的界面樣式,如圖 8-32所示。圖8-31自動套用格式圖8-32屬性生成器DataList控件經(jīng)常在開發(fā)中使用,DataList控件不僅能夠支持Repe
52、ater控件中的ItemCommand、ItemCreated、ItemDataBound事件,還支持更多的服務器事件。對項中的按鈕進行操作,如果按鈕的 CommandName屬性為"edit”,則該按鈕則可以引發(fā) EditorCommand事件,同樣也可以配置不同的 CommandName屬性來實現(xiàn)不同的操作。編輯 DataList控件,并編輯相應的 HTML代碼,讓DataList控 件包括按鈕,并為按鈕配置相應的CommandName屬性,示例代碼如下所示。<asp:DataList ID="DataList1" runat="server&
53、quot; BackColor="White"BorderC010r="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"DataKeyField="ID" DataSourceID="SqlDataSource1" Font-Bold="False" Font-Italic="False" Font-Overline="False&q
54、uot; Font-Strikeout="False" Font-Underline="False" GridLines="Horizontal" Width="100%" ondeletecommand="DataList1_DeleteCommand"><FooterStyle BackC010r="#B5c7DE" ForeColor="#4A3c8C" /><AlternatingItemStyle BackC010r=&q
55、uot;#F7F7F7" /><ItemStyle BackC010r="#E7E7FF" ForeColor="#4A3c8C" /><SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeC010r="#F7F7F7" /><HeaderStyle BackCo1or="#4A3c8C" Font-Bo1d="True" ForeC010r=&
56、quot;#F7F7F7" /><ItemTemp1ate>新聞ID:<asp:Labe1 ID="IDLabe1" runat="server" Text='<%# Eva1("ID") %>' /><br /> 新聞編號:<asp:Labe1 ID="TITLELabe1" runat="server" Text='<%# Eva1("TITLE") %>'
57、/><br /><asp:Button ID="Button1" runat="server" Text=" 刪除"CommandName="de1ete" CommandArgument='<%# Eva1("ID") %>'/></ItemTemp1ate></asp:DataList>上述代碼創(chuàng)建了一個DataList控件并配置了按鈕控件,并將按鈕控件的 CommandName屬性配置為“delete”,則觸
58、發(fā)該按鈕則會引發(fā)DeleteCommand事件。在屬性窗口中找到DeleteCommand事件,雙擊【DeleteCommand】連接系統(tǒng)會自動生成 DeleteCommand事件相應的方法。當生成了 DeleteCommand 事件后,可以在代碼段中編寫相應的方法,示例代碼如下所示。protected void DataList1_De1eteCommand(object source, DataListCommandEventArgs e) Labe11.Text = e. CommandArgument.ToString()+"被執(zhí)行";當用戶單擊了相應的按鈕時會觸發(fā)
59、DeleteCommand事件。開發(fā)人員能夠通過傳遞過來的參數(shù),可以編寫相應的方法,運行結(jié)果如圖8-33所示。圖 8-33 觸發(fā) DeleteCommand 事件CommandArgument 參數(shù)程序運行后,當用戶單擊了相應的按鈕時,開發(fā)人員可以通過獲取傳遞的 的值來編寫相應的方法從而執(zhí)行實現(xiàn)不同的應用。8.4 數(shù)據(jù)列表控件(GridView )GridView是ASP.NET中功能非常豐富的控件之一,它可以以表格的形式顯示數(shù)據(jù)庫的內(nèi)容并通過 數(shù)據(jù)源控件自動綁定和顯示數(shù)據(jù)。開發(fā)人員能夠通過配置數(shù)據(jù)源控件對GridView中的數(shù)據(jù)進行選擇、排序、分頁、編輯和刪除功能進行配置。GridView控
60、件還能夠指定自定義樣式,在沒有任何數(shù)據(jù)時可以自定義無數(shù)據(jù)時的 UI樣式。1 .建立 GridView 控件GridView控件為開發(fā)人員提供了強大的管理方案,同樣 GridView也支持內(nèi)置格式,單擊【自動套 用格式】連接可以選擇 GridView中的默認格式,如圖 8-34所示。GridView是以表格為表現(xiàn)形式,GridView包括行和列,通過配置相應的屬性能夠編輯相應的行的樣式,同樣也可以選擇【編輯列】選項來編寫相應的列的樣式,如圖 8-35所示。1 «圖8-34自動套用格式二牌kiiO de-iUdi HD muWX1,闌”U0 Is-fapJ'j-iXt被汕利二 r
61、isU2JHf'M十 I diR uk-uf . - Kfii圖8-35編輯列GridView控件提供兩個用戶綁定到數(shù)據(jù)的選項,其一是使用 DataSourcelD進行數(shù)據(jù)綁定,這種方 法通常情況下是綁定數(shù)據(jù)源控件;而另一種則是使用DataSource屬性進行數(shù)據(jù)綁定,這種方法能夠?qū)ridView控件綁定到包括ADO.NET數(shù)據(jù)和數(shù)據(jù)讀取器內(nèi)的各種對象。使用DataSourceID進行數(shù)據(jù)綁定,可以讓 GridView控件能夠自動的處理分頁、選擇等操作,如圖 8-36所示。而使用DataSource屬性進行數(shù)據(jù)綁定,則需要開發(fā)人員通過編程實現(xiàn)分頁等操作。GridView控件能夠自定義
62、字段,單擊【添加列】按鈕,可以選擇相應類型的列。在添加列選項中,GridView控件支持多種列類型的列,包括復選框、圖片、單選框、超鏈接等,如圖 8-37所示。r用特辛r白/德七宙燈圖8-36可選相應操作圖8-37添加字段添加自定義字段,GridView控件支持從數(shù)據(jù)源中讀取相應的數(shù)據(jù)源來配置相應的字段,來讓開發(fā)人員自定義的讀取數(shù)據(jù)源中的相應字段來自定義開發(fā),如圖 8-38所示。當選擇從數(shù)據(jù)源中獲取文本,可 以通過Format的形式編寫相應的文本。例如,從數(shù)據(jù)源中獲取title歹U,而顯示文本為“這是一個標題:title值”,則可以編寫為“這是一個標題:0",如圖8-39所示。圖8-
63、38添加字段圖8-39格式化字符串輸出配置完成后,GridView控件的HTML標簽生成代碼如下所示:<asp:GridView ID="GridView1" runat="server" AllowPaging="True"AllowSorting="True" AutoGenerateColumns="False"BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth=&quo
64、t;1px"CellPadding="2" DataKeyNames="ID" DataSourceID="SqlDataSource1"ForeColor="Black" GridLines="None" Width="100%”><FooterStyle BackColor="Tan" /><Columns><asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦產(chǎn)品供貨協(xié)議合同
- 有車輛的離婚協(xié)議書
- 北京商品房認購協(xié)議書
- 農(nóng)業(yè)種植技術(shù)指導書
- 純技術(shù)入股合作的協(xié)議書
- 湖南離婚協(xié)議書年
- 三農(nóng)村土地整治與開發(fā)方案
- 托管班合作協(xié)議書
- 股權(quán)融資合同書
- 標準汽車租賃合同協(xié)議
- 2024年05月浙江金華成泰農(nóng)商銀行員工招考筆試歷年參考題庫附帶答案詳解
- 帶看協(xié)議書范本(2篇)
- 2025-2030年中國科教玩具行業(yè)發(fā)展動態(tài)及前景趨勢分析報告新版
- 馬匹寄養(yǎng)協(xié)議書
- 股權(quán)投資項目建議書
- 2025年北京廣播電視臺招聘(140人)歷年高頻重點提升(共500題)附帶答案詳解
- 2025年全國計算機二級等級考試全真模擬試卷及答案(共九套卷)
- 2024復工復產(chǎn)安全培訓
- 2025中國南光集團限公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 機加工行業(yè)安全生產(chǎn)風險辨識及控制清單
- 江蘇省蘇州市2024-2025學年第一學期八年級數(shù)學期末模擬卷(一)(無答案)
評論
0/150
提交評論