




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章Web窗體的數(shù)據(jù)控件在了解了 ADO.NET基礎(chǔ)后,就可以使用 ADO.NET提供的對(duì)象進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)和操作。ASP.NET還提供了一些 Web窗體的數(shù)據(jù)控件,開(kāi)發(fā)人員能夠智能的配置與數(shù)據(jù)庫(kù)的連接,而不需要手動(dòng)的編寫 數(shù)據(jù)庫(kù)連接。ASP.NET不僅提供了數(shù)據(jù)源控件,還提供了能夠顯示數(shù)據(jù)的控件,簡(jiǎn)化了數(shù)據(jù)顯示的開(kāi)發(fā), 開(kāi)發(fā)人員只需要簡(jiǎn)單的修改模板就能夠?qū)崿F(xiàn)數(shù)據(jù)顯示和分頁(yè)。8.1 數(shù)據(jù)源控件數(shù)據(jù)源控件很像 ADO.NET中的Connection對(duì)象,數(shù)據(jù)源控件用來(lái)配置數(shù)據(jù)源,當(dāng)數(shù)據(jù)控件綁定數(shù) 據(jù)源控件時(shí),就能夠通過(guò)數(shù)據(jù)庫(kù)源控件來(lái)獲取數(shù)據(jù)源中的數(shù)據(jù)并顯示。而無(wú)需通過(guò)程序?qū)崿F(xiàn)數(shù)據(jù)源代碼 的編寫。
2、8.1.1 SQL 數(shù)據(jù)源控件(SqlDataSource )SqlDataSource控件代表一個(gè)通過(guò)ADO.NET 連接到 SQL數(shù)據(jù)庫(kù)提供者的數(shù)據(jù)源控件。并且SqlDataSource能夠與任何一種ADO.NET 支持的數(shù)據(jù)庫(kù)進(jìn)行交互,這些數(shù)據(jù)庫(kù)包括SQL Server、ACCESS、Oledb、Odbc 以及 Oracle。SqlDataSource控件能夠支持?jǐn)?shù)據(jù)的檢索、插入、更新、刪除、排序等,以至于數(shù)據(jù)綁定控件可以在 這些能力被允許的條件下自動(dòng)的完成該功能,而不需要手動(dòng)的代碼實(shí)現(xiàn)。并且SqlDataSource控件所屬的頁(yè)面被打開(kāi)時(shí),SqlDataSource控件能夠自動(dòng)的打開(kāi)數(shù)
3、據(jù)庫(kù),執(zhí)行 SQL語(yǔ)句或存儲(chǔ)過(guò)程,返回選定的 數(shù)據(jù),然后關(guān)閉連接。SqlDataSource控件強(qiáng)大的功能極大的簡(jiǎn)化了開(kāi)發(fā)人員的開(kāi)發(fā),縮減了開(kāi)發(fā)中的代碼。(1是SqlDataSource控件也有一些缺點(diǎn),就是在性能上不太適應(yīng)大型的開(kāi)發(fā),而對(duì)于中小型的開(kāi)發(fā), SqlDataSource控件已經(jīng)足夠了。1 .建立 SqlDataSource 控件ASP.NET提供的 SqlDataSource控件能夠方便的添加到頁(yè)面,當(dāng) SqlDataSource控件被添加到 ASP.NET頁(yè)面中時(shí),會(huì)生成 ASP.NET標(biāo)簽,示例代碼如下所示。<asp:SqlDataSource ID="Sql
4、DataSource1" runat="server"></asp:SqlDataSource>切換到視圖模式下,點(diǎn)擊SqlDataSource控件會(huì)顯式【配置數(shù)據(jù)源 】,單擊【配置數(shù)據(jù)源 連接時(shí),系統(tǒng)能夠智能的提供SqlDataSource控件配置向?qū)В鐖D 8-1所示。在新建數(shù)據(jù)源后,開(kāi)發(fā)人員可以選擇是否保存在web.config數(shù)據(jù)源中以便應(yīng)用程序進(jìn)行全局配置,通常情況下選擇保存。由于現(xiàn)在沒(méi)有連接,單擊【新建連接】按鈕選擇或創(chuàng)建一個(gè)數(shù)據(jù)源。單擊后,系 統(tǒng)會(huì)彈出對(duì)話框用于選擇數(shù)據(jù)庫(kù)文件類型,如圖8-2所示。圖 8-1 配置 SqlDataSo
5、urce 控件圖8-2選擇數(shù)據(jù)源當(dāng)選擇完后,配置信息就會(huì)顯式在web.config中。當(dāng)需要對(duì)用戶控件進(jìn)行維護(hù)時(shí),可以直接修改web.config ,而不需要修改每個(gè)頁(yè)面的數(shù)據(jù)源控件,這樣就方便了開(kāi)發(fā)和維護(hù)。當(dāng)選擇了數(shù)據(jù)源后,需 要對(duì)數(shù)據(jù)源的連接進(jìn)行配置,這一步與ADO.NET中的Connection對(duì)象一樣,就是要與數(shù)據(jù)庫(kù)建立連接,當(dāng)配置好連接后,可以單擊【測(cè)試連接】按鈕來(lái)測(cè)試是否連接成功,如圖8-3和圖8-4所示。圖8-3添加連接 irr11m匈 期試隹愜廁.圖8-4測(cè)試連接連接成功后,單擊【確定】按鈕,系統(tǒng)會(huì)自動(dò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ù)源控件可以指定開(kāi)發(fā)人員所需要使用的Sele
7、ct語(yǔ)句或存儲(chǔ)過(guò)程,開(kāi)發(fā)人員能夠在配置Select語(yǔ)句窗口中進(jìn)行 Select語(yǔ)句的配置和生成,如果開(kāi)發(fā)人員希望手動(dòng)編寫Select語(yǔ)句或其他語(yǔ)句,可以單擊【指定自定義 SQL語(yǔ)句或存儲(chǔ)過(guò)程】按鈕進(jìn)行自定義配置,Select語(yǔ)句的配置和生成如圖8-6所示。圖8-5成功添加連接圖8-6配置使用Select語(yǔ)句對(duì)于開(kāi)發(fā)人員,只需要勾選相應(yīng)的字段,選擇Where條件和Order By語(yǔ)句就可以配置一個(gè)Select語(yǔ)句。但是,通過(guò)選擇只能夠查詢一個(gè)表,并實(shí)現(xiàn)簡(jiǎn)單的查詢語(yǔ)。如果要實(shí)現(xiàn)復(fù)雜的SQL查詢語(yǔ)句,可以單擊【指定自定義 SQL語(yǔ)句或存儲(chǔ)過(guò)程】進(jìn)行自定義SQL語(yǔ)句或存儲(chǔ)過(guò)程的配置,如圖 8-7所示,
8、開(kāi)發(fā)人員選才i了一個(gè) getdetail的存儲(chǔ)過(guò)程作為數(shù)據(jù)源。單擊【下一步】按鈕,就需要對(duì)相應(yīng)的字段進(jìn)行配置,這些字段就像ADO.NET中的參數(shù)化查詢一樣。在數(shù)據(jù)源控件中,也是通過(guò) 來(lái)表示參數(shù)化變量, 等就需要對(duì)參數(shù)進(jìn)行配置,如圖8-8所示。當(dāng)需要配置相應(yīng)的字段,例如配置WHERE語(yǔ)句圖8-7定義自定義語(yǔ)句或存儲(chǔ)過(guò)程ZIHJ圖8-8 添加WHERE子句添加WHERE子句時(shí),SQL語(yǔ)句中的值可以選擇,默認(rèn)值、控件、 Cookie或者是Session等。當(dāng)配置 完成后,就可以測(cè)試查詢,如果測(cè)試后顯示的結(jié)果如預(yù)期一樣,則可以單擊完成,如圖8-9所示。圖8-9測(cè)試查詢并完成完成后,SqlDataSou
9、rce控件標(biāo)簽代碼如下所示。<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)。當(dāng)需要使用可視化屬性時(shí), 需選擇【使用自定 SQL語(yǔ)句或存儲(chǔ)過(guò)程】復(fù)選框,在導(dǎo)航中可以使用查詢生成器生成查詢語(yǔ)句,如圖 8-10所示。圖8-10自定義語(yǔ)句或存儲(chǔ)過(guò)程選擇【查詢生成器】按鈕,系統(tǒng)會(huì)提示選擇相應(yīng)的表并通過(guò)相應(yīng)的表來(lái)生成查詢語(yǔ)句,如圖8-11和圖8-12所示。圖8-11選擇相應(yīng)的表圖8-12使用查詢生成器配置相應(yīng)的查詢語(yǔ)句后,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、碼自動(dòng)增加了一個(gè) InsertCommand并指定了 Insert語(yǔ)句。開(kāi)發(fā)人員可以為 SqlDataSource控件 指定四個(gè)命令參數(shù): SelectCommand、UpdateCommand、DelectCommad 和 InsertCommand。每個(gè)者B是數(shù) 據(jù)源控件的單一屬性,開(kāi)發(fā)人員可以配置相應(yīng)的語(yǔ)句指定Select、Update > Delete以及Insert方法。SqlDataSource控件同時(shí)能夠使用緩存來(lái)降低頁(yè)面與數(shù)據(jù)庫(kù)之間連接頻率,這樣可以避免開(kāi)銷很大的查詢操作,以及建立連接和關(guān)閉連接操作。只要數(shù)據(jù)庫(kù)是相對(duì)穩(wěn)定不變的,則可以使用SqlDataSource控件的緩
13、存屬性(EnableCaching)來(lái)進(jìn)行緩存。在默認(rèn)情況下,緩存屬性( EnableCaching)是關(guān)閉的,需要開(kāi)發(fā)人員自行設(shè)置緩存屬性。8.1.2 Access 數(shù)據(jù)源控件(AccessDataSource )在上一章中介紹了如何使用ADO.NET中OleDb來(lái)連接和讀取 Access數(shù)據(jù)庫(kù)。Access數(shù)據(jù)庫(kù)是一種桌面級(jí)的數(shù)據(jù)庫(kù),當(dāng)對(duì)應(yīng)用程序性能,以及數(shù)據(jù)庫(kù)性能要求不是很高,并且數(shù)據(jù)量不需很大時(shí),可以 考慮選擇Access數(shù)據(jù)庫(kù)。SqlDataSource能夠與任何一種 ADO.NET支持的數(shù)據(jù)源進(jìn)行交互,這些數(shù)據(jù)源包括SQL Server、Access> Oledb、Odbc以
14、及Oracle。但是 Access數(shù)據(jù)庫(kù)有專門的數(shù)據(jù)源控件,就是 AccessDataSource。 AccessDataSource控件同配置 SqlDataSource控件基本相同,如圖 8-13所示。與SqlDataSource不同白是,SqlDataSource主要采用的是 ConnectionString屬性連接數(shù)據(jù)庫(kù),而Access 則采用的是 AccessDataSource方式連接數(shù)據(jù)庫(kù)。因?yàn)?Access數(shù)據(jù)庫(kù)是以文件的形式存在于系統(tǒng)中的, 所以主要采用DataFile屬性直接以文件地址的方式進(jìn)行連接。要連接Access數(shù)據(jù)庫(kù),則必須選擇Access數(shù)據(jù)庫(kù)文件,如圖8-14所
15、示。圖8-13選擇數(shù)據(jù)庫(kù)圖8-14 選擇Access文件在選才i了 Access數(shù)據(jù)庫(kù)文件后,單擊【確定】按鈕,系統(tǒng)就會(huì)為開(kāi)發(fā)人員配置連接字串,在核對(duì)無(wú)誤后,單擊【下一步】按鈕進(jìn)入Select語(yǔ)句的配置。同SqlDataSource控件一樣,同樣能夠配置 Select語(yǔ)句或自定義存儲(chǔ)過(guò)程,如圖8-15所示。同樣8-15 配置Access數(shù)據(jù)庫(kù)的Select語(yǔ)句其他步驟與SqlDataSource相同,當(dāng)創(chuàng)建完成后, AccessDataSource控件的HTML代碼如下所示。<asp:AccessDataSource ID="AccessDataSource1" ru
16、nat="server" DataFile="/acc.mdb" SelectCommand="SELECT bh, title FROM mytable”> </asp:AccessDataSource>當(dāng)需要使用Access數(shù)據(jù)庫(kù),推薦將Access數(shù)據(jù)庫(kù)文件保存在 App_Data文件夾中。以保證數(shù)據(jù)庫(kù)文 件是私有的,因?yàn)?ASP.NET不允許直接請(qǐng)求App_Data文件夾。注意:AccessDataSource控件不支持訪問(wèn)受密碼保護(hù)的Access數(shù)據(jù)庫(kù)文件,如果需要訪問(wèn)受密碼保護(hù)的Access數(shù)據(jù)庫(kù)文件,則需要使用
17、SqlDataSource控件。8.1.3 目標(biāo)數(shù)據(jù)源控件(ObjectDataSource )大多數(shù)ASP.NET數(shù)據(jù)源控彳%如 SqlDataSource都是在兩層應(yīng)用程序?qū)哟谓Y(jié)構(gòu)中使用。在該層次 結(jié)構(gòu)中,表示層(ASP.NET網(wǎng)頁(yè))可以與數(shù)據(jù)層(數(shù)據(jù)庫(kù)和XML文件等)直接進(jìn)行通信。但是,常用的應(yīng)用程序設(shè)計(jì)原則是將表示層與業(yè)務(wù)邏輯相分離,而將業(yè)務(wù)邏輯封裝在業(yè)務(wù)對(duì)象中。這些業(yè)務(wù)對(duì)象 在表示層和數(shù)據(jù)層之間形成一層,從而生成一種三層應(yīng)用程序結(jié)構(gòu)。ObjectDataSource控件通過(guò)提供一種將相關(guān)頁(yè)上的數(shù)據(jù)控件綁定到中間層業(yè)務(wù)對(duì)象的方法,為三層結(jié)構(gòu)提供支持。在不使用擴(kuò)展代碼的情 況下,Obje
18、ctDataSource使用中間層業(yè)務(wù)對(duì)象以聲明方式對(duì)數(shù)據(jù)執(zhí)行選擇、插入、更新、刪除、分頁(yè)、 排序、緩存和篩選操作。也就是說(shuō),SqlDataSource是兩層模型中使用的.頁(yè)面通過(guò)直接訪問(wèn)數(shù)據(jù)庫(kù).。ObjectDataSource用于三層模型中,也就是將中間業(yè)務(wù)對(duì)象通過(guò)其訪問(wèn)數(shù)據(jù)庫(kù)的。然后中間層業(yè)務(wù)對(duì)象再用在表示層中,例如 在開(kāi)發(fā)中使用的自定義控件。ObjectDataSource的業(yè)務(wù)對(duì)象是可以用檢索或更新數(shù)據(jù)的業(yè)務(wù)對(duì)象,例如Bin或App_Code目錄中定義的對(duì)象,選擇業(yè)務(wù)對(duì)象如圖 8-16所示。圖8-16選擇業(yè)務(wù)對(duì)象可以創(chuàng)建一個(gè)類庫(kù),并在 ASP.NET網(wǎng)站中添加引用,這樣就可以通過(guò)Ob
19、jectDataSource對(duì)象選擇該類庫(kù)中的方法,如圖8-17和圖8-18所示。3飛±1HFr EJiflT «XT- T/限一;炸心ffJ -r r獨(dú)=I Aetkv lUktaS "Jr-= * hipxJJ Dtj = ttl.1.七:-ir-z -» H-ipxa .皿“濫22皿珈心b .成:口|匚工事丐Li briwyllS _d CrnjHliH口 引用$ CUssL.圖8-18添加引用圖8-17添加類庫(kù)ObjectDataSource 控件對(duì)象模型類似于SqlDataSource 控件。ObjectDataSource 公開(kāi)一個(gè) Type
20、Name屬性,該屬性指定要實(shí)例化來(lái)執(zhí)行數(shù)據(jù)操作白對(duì)象類型,也就是類的名稱。與SqlDataSource的命令屬性類似,同樣 ObjectDataSource包括四個(gè)重要屬性,這四個(gè)屬性分別為SelectMethod、UpdateMethod、InsertMethod和DeleteMethod ,分別用于指定要執(zhí)行這些數(shù)據(jù)操作關(guān)聯(lián)類型的方法。選擇對(duì)象后,就可 以配置 SelectMethod、UpdateMethod、InsertMethod 和 DeleteMethod 屬性的方法。示例代碼如下所示。 public class Class1/創(chuàng)建類庫(kù) 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中的對(duì)象,如圖 8-19所示。圖8-19定義數(shù)據(jù)方法ObjectDataSource控件可以使開(kāi)發(fā)人員將諸如GridView和DropDownList這樣的用戶界面控件綁定到一個(gè)中間層組件。能夠無(wú)需編寫任何代碼即可綁定到一個(gè)組件,從而極大的簡(jiǎn)
22、化用戶界面。與其他的 數(shù)據(jù)源控彳相同,ObjectDataSource控件在運(yùn)行時(shí)可以接受參數(shù),并在參數(shù)集合中對(duì)參數(shù)進(jìn)行管理。每 一項(xiàng)數(shù)據(jù)操作都有一個(gè)相關(guān)的參數(shù)集合。對(duì)于選擇操作,可以使用SelectParameters集合,對(duì)于更新操作,可以使用 UpdateParameters 集合,而給予 InsertParameters、UpdateParameters DeleteParameters 集 合,需要分別確定相應(yīng)操作所需調(diào)用的方法。8.1.4 LINQ 數(shù)據(jù)源控件(LinqDataSource )語(yǔ)言集成查詢(LINQ )是一種查詢語(yǔ)法,它可定義一組查詢運(yùn)算符,以便在任何基于.NET的
23、編程語(yǔ)言中以一種聲明性的方式來(lái)表示遍歷、篩選和投影操作。數(shù)據(jù)對(duì)象可以是內(nèi)存中的數(shù)據(jù)集合,或者是 表示數(shù)據(jù)庫(kù)中數(shù)據(jù)的對(duì)象。無(wú)需為每個(gè)操作編寫SQL命令,即可檢索或修改數(shù)據(jù)。使用LinqDataSource控件,開(kāi)發(fā)人員可以通過(guò)在標(biāo)記文本中設(shè)置屬性從而在ASP.NET網(wǎng)頁(yè)中使用LINQ。LinqDataSource控件使用LINQ to SQL來(lái)自動(dòng)生成數(shù)據(jù)命令。LINQ數(shù)據(jù)源可以是 LINQ數(shù)據(jù)庫(kù)或數(shù)組等以集合形式表現(xiàn)的數(shù)據(jù)庫(kù),有關(guān) LINQ的知識(shí)會(huì)有專門的章節(jié)講解,在這里使用數(shù)組作為數(shù)據(jù) 源,示例代碼如下所示。public string口 arr="1","2&q
24、uot;,"3","4"創(chuàng)建數(shù)組在ASP.NET頁(yè)面中使用LINQ數(shù)據(jù)源控件可以對(duì) LINQ數(shù)據(jù)源進(jìn)彳T查詢,LINQ數(shù)據(jù)源控件代碼如 下所示。<asp:LinqDataSource ID="LinqDataSource1" runat="server"></asp:LinqDataSource>創(chuàng)建了 LINQ數(shù)據(jù)源控件,同樣單擊【配置數(shù)據(jù)源】按鈕可以進(jìn)行LINQ數(shù)據(jù)源控件的數(shù)據(jù)源配置,如圖8-20所示。當(dāng)選擇上下文對(duì)象后,需要配置數(shù)據(jù)選擇,LINQ數(shù)據(jù)源控件同樣支持Group和Where
25、關(guān)鍵字,如圖8-21所示。圖8-20選擇上下文對(duì)象圖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ù)源控件來(lái)當(dāng)完成LIN
26、Q數(shù)據(jù)源控件(LinqDataSource)的配置后,就可以通過(guò)控件綁定 獲取LINQ數(shù)據(jù)庫(kù)中白信息。LinqDataSource控件按以下順序應(yīng)用數(shù)據(jù)操作: Where:指定要返回的數(shù)據(jù)記錄。Order By :排序。Group By :聚合共享值的數(shù)據(jù)記錄。Order Groups By :對(duì)分組數(shù)據(jù)進(jìn)行排序。Select:指定要返回的字段或?qū)傩?。Auto-sort:按用戶選定的屬性對(duì)數(shù)據(jù)記錄進(jìn)行排序。Auto-page:檢索用戶選定的數(shù)據(jù)記錄的子集。ASP.NET 3.5 與LINQ是ASP.NET 3.5中增加的一種語(yǔ)言集成查詢,該控件的高級(jí)屬性和方法在 LINQ中會(huì)詳細(xì)講解。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屬性的所屬的文件,當(dāng)配置完成后,XmlDataSource控件就可以和數(shù)據(jù)綁定控件結(jié)合使用了。2 . XmlDataSource控件的使用當(dāng)配置完成XmlDataSource后,就可以和數(shù)據(jù)綁定控件結(jié)合使用。在使用數(shù)據(jù)綁定控
29、件前,先配置 XML數(shù)據(jù)文件,示例代碼如下所示。<?xml version="1.0" encoding="utf-8" ?><news><title> 新聞標(biāo)題 1</title><time>2008</time><author>guojing</author><content> 這是新聞?wù)?</content><title> 新聞標(biāo)題 2</title><time>2008</time&g
30、t;<author>guojing</author><content> 這是新聞?wù)?</content></news>上述代碼配置了 XML數(shù)據(jù)文件,配置完成后,可以通過(guò)數(shù)據(jù)綁定控件來(lái)訪問(wèn),可以使用 TreeView 控件,示例代碼如下所示。<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1"></asp:TreeView>上述代碼只能夠顯示XML數(shù)據(jù)文件中
31、各個(gè)節(jié)點(diǎn)的名稱,并不能顯示各個(gè)節(jié)點(diǎn)的值,必須為顯示的節(jié)點(diǎn)做配置。在控件側(cè)邊單擊【 TreeNode數(shù)據(jù)綁定】選項(xiàng),并選擇相應(yīng)的列進(jìn)行節(jié)點(diǎn)配置,如圖 8-24 所示。圖8-24選擇列配置TextFiled配置TextFiled后,各個(gè)節(jié)點(diǎn)的值會(huì)顯示為 XML數(shù)據(jù)中標(biāo)簽內(nèi)的值,而XmlDataSource控件的HTML 代碼則會(huì)被系統(tǒng)自動(dò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>運(yùn)行后,相應(yīng)的節(jié)點(diǎn)則會(huì)顯示為標(biāo)簽的相應(yīng)的值,如圖 8-25所示。圖 8-25 XmlDataSource 數(shù)據(jù)綁定XmlDataSource控件一般用于只讀的數(shù)據(jù)方案。數(shù)據(jù)綁定控件顯示XML數(shù)據(jù),還可以通過(guò)XmlDataSource來(lái)編輯 XML數(shù)據(jù)。但是當(dāng)XmlDataSource控件加載時(shí),必須使用 DataFile屬性加載,而 不能從Data屬性中指定的XML的字符串進(jìn)行加載。8
35、.1.6站點(diǎn)導(dǎo)航控件(SiteMapDataSource )為了引導(dǎo)用戶在站點(diǎn)的各個(gè)頁(yè)面能夠流暢跳轉(zhuǎn),需要在每個(gè)頁(yè)面加入頁(yè)面導(dǎo)航。在ASP的開(kāi)發(fā)過(guò)程中,必須手動(dòng)的為每個(gè)頁(yè)面加入導(dǎo)航,這樣不僅加大了開(kāi)發(fā)的復(fù)雜度,也讓代碼的復(fù)用性變低。相對(duì) 于手動(dòng)加入導(dǎo)航更好的解決方法則是使用js在各個(gè)頁(yè)面引用導(dǎo)航, 但是一旦頁(yè)面變得很多,可能會(huì)導(dǎo)致讓js頁(yè)面效率變低。而在ASP.ENT 2.0以后的版本,微軟提供了導(dǎo)航控件讓導(dǎo)航菜單的創(chuàng)建、自定義和維護(hù)變得更加的簡(jiǎn)單。SiteMapDataSource控件包含來(lái)自站點(diǎn)地圖的導(dǎo)航數(shù)據(jù),這些數(shù)據(jù)包括有關(guān)網(wǎng)站中的頁(yè)的信息,例如網(wǎng)站頁(yè)面的標(biāo)題、說(shuō)明信息以及URL等。如果
36、將導(dǎo)航數(shù)據(jù)存儲(chǔ)在一個(gè)地方,則可以方便的在網(wǎng)站的導(dǎo)航菜單添加和刪除項(xiàng)。站點(diǎn)地圖提供程序中檢索導(dǎo)航數(shù)據(jù),然后將數(shù)據(jù)傳遞給可顯示該數(shù)據(jù)的數(shù)據(jù)綁定 控件,顯示導(dǎo)航菜單。如果需要使用 SiteMapDataSource控件,用戶必須在 Web.sitemap文件中描述站點(diǎn)的結(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ù)庫(kù)”/>vsiteMapNode url="AccessDataSource" title="AccessDataSource"description="Access 數(shù)據(jù)庫(kù)"/>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),在文件中,必須有一個(gè)根為 siteMapNode的元素作為siteMap元 素的自己,并定義以下常用屬性:title :為站點(diǎn)地圖節(jié)點(diǎn)指定一個(gè)標(biāo)題,該標(biāo)題將顯示為網(wǎng)頁(yè)的連接文本。Url :為網(wǎng)頁(yè)指定URL。支持相對(duì)或絕對(duì)路徑。Description :為站點(diǎn)地圖的節(jié)點(diǎn)添加描述,當(dāng)用戶鼠標(biāo)移動(dòng)到該欄目時(shí),則會(huì)顯示描述信息。StartFormCurrentNode :當(dāng)設(shè)置為true時(shí),則可以從該節(jié)點(diǎn)開(kāi)始檢索站點(diǎn)地圖結(jié)構(gòu)。StartingNodeOffset :當(dāng)屬性設(shè)置為 2時(shí)可以檢索當(dāng)前地圖結(jié)構(gòu)。SiteMap
40、DataSource控件無(wú)需配置,拖放一個(gè)TreeView 控件和一個(gè) SiteMapDataSource控件在頁(yè)面,指定TreeView數(shù)據(jù)源即可,如圖 8-26所示。仟青SqUDatiSgqrqe.upx AcccsDcrtaScnircrLm 4nsiaSourm ObjeztD ataS-owce XniiDataicniceSi l«4li. I- Sl圖8-26配置數(shù)據(jù)源配置完成后,數(shù)據(jù)綁定控件會(huì)自動(dòng)讀取Web.sitmap文件并生成導(dǎo)航。當(dāng)使用了 SiteMapDataSource控件后,數(shù)據(jù)綁定控件就能夠綁定SiteMapDataSource控件并自動(dòng)讀取相應(yīng)的值并生
41、成導(dǎo)航,當(dāng)需要對(duì)導(dǎo)航進(jìn)行修改時(shí),只需要修改 Web.sitemap即可,方便了站點(diǎn)導(dǎo)航功能的使用和維護(hù)。運(yùn)行后如圖8-27所示。圖8-27 SiteMapDataSource控件數(shù)據(jù)顯示8.2 重復(fù)列表控件(Repeater)重復(fù)列表控件(Repeater-)是一個(gè)可重復(fù)操作的控件。它能夠通過(guò)使用模板顯示一個(gè)數(shù)據(jù)源的內(nèi)容,而且開(kāi)發(fā)人員可以輕松的配置這些模板,Repeater控件包括如標(biāo)題和頁(yè)腳這樣的數(shù)據(jù),它可以遍歷所有的數(shù)據(jù)選項(xiàng)并將其應(yīng)用到模板中。重復(fù)列表控件并不是從 WebControl派生出來(lái),重復(fù)列表控件可以直接操控HTML文件或者樣式表來(lái)編寫模板和控制屬性。重復(fù)列表控件支持5種模板,用
42、來(lái)顯示相應(yīng)的界面信息,這5種模板的功能如下所示:AlternatingItemTemplate :指定如何顯示其他選項(xiàng)。ItemTemplate :指定如何顯示選項(xiàng)。HeaderTemplate:建立如何顯示標(biāo)題。FooterTemplate:建立如何顯示頁(yè)腳。SeparatorTemplate:指定如何顯示不同選項(xiàng)之間的分隔符。在上面5種模板中,惟一需要使用的是ItemTemplate模板,其他的模板可以選用。示例代碼如下所示。<asp:Repeater ID="Repeater1" runat="server" DataSourceID=&qu
43、ot;SqlDataSource1"><ItemTemplate><%# Eval("title")%></ItemTemplate></asp:Repeater>“<%#%>”符號(hào)之間的語(yǔ)句表示數(shù)據(jù)綁定表達(dá)式,可以直接使用數(shù)據(jù)源控件中查詢出來(lái)字段。在Repeaater中間,使用ItemTemplate制作模板,在ItemTemplate模板中可以直接使用HMTL制作樣式。在數(shù)據(jù)顯示中,可以直接使用“<%#%>”綁定數(shù)據(jù)庫(kù)中的列,例如當(dāng)數(shù)據(jù)源控件中查詢了一個(gè)title列時(shí),則在Repea
44、ter控件中直接使用“ <%#Eval( title")”方式顯式title字段的值。顯示字段有幾種方法,其中“ <%#Eval(字段名稱")>”是最方便的顯示字段的方法,能夠方便的 在模板中嵌入,其他方法還有使用" <%#DataBlinder.Eval(Container.DataItem,字段名稱")%>"方式來(lái)綁 定相關(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>上述代碼自定義了一個(gè) HTML代碼,增加了一個(gè)DIV標(biāo)簽,該標(biāo)簽設(shè)置了 CSS屬性border-bottom:1pxdashed #ccc; padding:
46、5px 5px 5px 5px; 。Repeater控件能夠自動(dòng)的重復(fù)該模板。當(dāng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)完畢后,則不再重復(fù),運(yùn)行結(jié)果如圖 8-28所示。圖 8-28 Repeater控件重復(fù)列表控件最常用的事件有ItemCommand、ItemCreated、ItemDataBound。當(dāng)創(chuàng)建一個(gè)項(xiàng)或者一個(gè)項(xiàng)被綁定到數(shù)據(jù)源時(shí),將觸發(fā) ItemCreated和ItemDataBound事件。當(dāng)重復(fù)列表控件中有按鈕被激發(fā) 時(shí),會(huì)觸發(fā)ItemCommand事件。在ItemCommand中,為了自定義按鈕控件相應(yīng)事件,開(kāi)發(fā)人員必須指定 RepeaterCommandEventArgs參數(shù)獲取 CommandAr
47、gument、CommandName和CommandSource三個(gè)屬性對(duì)應(yīng)的值,示例代碼如下所 示。<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>上述代碼增加了一個(gè)按鈕控件,并配置按鈕控件的命令參數(shù)為數(shù)據(jù)庫(kù)中的 件時(shí),則會(huì)觸發(fā)ItemCommand
49、,示例代碼如下所示。title的值。當(dāng)單擊按鈕控protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) Labell.Text ="用戶選擇了 " + e.CommandArgument.ToString();顯式選擇項(xiàng)上述代碼當(dāng)指定了執(zhí)行按鈕控件觸發(fā)的事件,運(yùn)行結(jié)果如圖8-29和圖8-30所示。圖 8-29 ItemCommand 事件圖8-30用戶選擇單擊后Repeat控件需要一定的 HTML知識(shí)才能顯示數(shù)據(jù)庫(kù)的相應(yīng)信息,雖然增加了一定的復(fù)雜度,但是 卻增加了靈活性。
50、Repeat控件能夠按照用戶的想法顯示不同的樣式,讓數(shù)據(jù)顯示更加豐富。8.3 數(shù)據(jù)列表控件(DataList)DataList控件支持各種不同的模板的樣式,通過(guò)為 DataList指定不同的樣式,可以自定義 DataList 控件的外觀。與 Repeater控件相同的是,DataList控件同樣也支持自定義 HTML ,但是DataList控件具 備Repeater控件不具有的特性, DataList控件常用屬性如下所示。AltermatingItemStyle :編寫交替行的樣式。EditItemStyle :正在編輯的項(xiàng)的樣式。FooterStyle:列表結(jié)尾處的腳注的樣式。HeaderS
51、tyle:列表頭部的標(biāo)頭的樣式。ItemStyle :單個(gè)項(xiàng)的樣式。SelectedItemStyle :選定項(xiàng)的樣式。SeparatorStyle:各項(xiàng)之間分隔符的樣式。通過(guò)修改DataList控件的相應(yīng)的屬性,能夠?qū)崿F(xiàn)復(fù)雜的HTML樣式而不需要通過(guò)變成實(shí)現(xiàn)。而DataList控件能夠套用自定義格式實(shí)現(xiàn)更多的效果,如圖 8-31所示。通過(guò)屬性生成器,同樣可以通過(guò)勾選相應(yīng)的項(xiàng)目來(lái)生成屬性,這些屬性能夠極大的方便開(kāi)發(fā)人員制 作DataList控件的界面樣式,如圖 8-32所示。圖8-31自動(dòng)套用格式圖8-32屬性生成器DataList控件經(jīng)常在開(kāi)發(fā)中使用,DataList控件不僅能夠支持Repe
52、ater控件中的ItemCommand、ItemCreated、ItemDataBound事件,還支持更多的服務(wù)器事件。對(duì)項(xiàng)中的按鈕進(jìn)行操作,如果按鈕的 CommandName屬性為"edit”,則該按鈕則可以引發(fā) EditorCommand事件,同樣也可以配置不同的 CommandName屬性來(lái)實(shí)現(xiàn)不同的操作。編輯 DataList控件,并編輯相應(yīng)的 HTML代碼,讓DataList控 件包括按鈕,并為按鈕配置相應(yīng)的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 /> 新聞編號(hào):<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)建了一個(gè)DataList控件并配置了按鈕控件,并將按鈕控件的 CommandName屬性配置為“delete”,則觸
58、發(fā)該按鈕則會(huì)引發(fā)DeleteCommand事件。在屬性窗口中找到DeleteCommand事件,雙擊【DeleteCommand】連接系統(tǒng)會(huì)自動(dòng)生成 DeleteCommand事件相應(yīng)的方法。當(dāng)生成了 DeleteCommand 事件后,可以在代碼段中編寫相應(yīng)的方法,示例代碼如下所示。protected void DataList1_De1eteCommand(object source, DataListCommandEventArgs e) Labe11.Text = e. CommandArgument.ToString()+"被執(zhí)行";當(dāng)用戶單擊了相應(yīng)的按鈕時(shí)會(huì)觸發(fā)
59、DeleteCommand事件。開(kāi)發(fā)人員能夠通過(guò)傳遞過(guò)來(lái)的參數(shù),可以編寫相應(yīng)的方法,運(yùn)行結(jié)果如圖8-33所示。圖 8-33 觸發(fā) DeleteCommand 事件CommandArgument 參數(shù)程序運(yùn)行后,當(dāng)用戶單擊了相應(yīng)的按鈕時(shí),開(kāi)發(fā)人員可以通過(guò)獲取傳遞的 的值來(lái)編寫相應(yīng)的方法從而執(zhí)行實(shí)現(xiàn)不同的應(yīng)用。8.4 數(shù)據(jù)列表控件(GridView )GridView是ASP.NET中功能非常豐富的控件之一,它可以以表格的形式顯示數(shù)據(jù)庫(kù)的內(nèi)容并通過(guò) 數(shù)據(jù)源控件自動(dòng)綁定和顯示數(shù)據(jù)。開(kāi)發(fā)人員能夠通過(guò)配置數(shù)據(jù)源控件對(duì)GridView中的數(shù)據(jù)進(jìn)行選擇、排序、分頁(yè)、編輯和刪除功能進(jìn)行配置。GridView控
60、件還能夠指定自定義樣式,在沒(méi)有任何數(shù)據(jù)時(shí)可以自定義無(wú)數(shù)據(jù)時(shí)的 UI樣式。1 .建立 GridView 控件GridView控件為開(kāi)發(fā)人員提供了強(qiáng)大的管理方案,同樣 GridView也支持內(nèi)置格式,單擊【自動(dòng)套 用格式】連接可以選擇 GridView中的默認(rèn)格式,如圖 8-34所示。GridView是以表格為表現(xiàn)形式,GridView包括行和列,通過(guò)配置相應(yīng)的屬性能夠編輯相應(yīng)的行的樣式,同樣也可以選擇【編輯列】選項(xiàng)來(lái)編寫相應(yīng)的列的樣式,如圖 8-35所示。1 «圖8-34自動(dòng)套用格式二牌kiiO de-iUdi HD muWX1,闌”U0 Is-fapJ'j-iXt被汕利二 r
61、isU2JHf'M十 I diR uk-uf . - Kfii圖8-35編輯列GridView控件提供兩個(gè)用戶綁定到數(shù)據(jù)的選項(xiàng),其一是使用 DataSourcelD進(jìn)行數(shù)據(jù)綁定,這種方 法通常情況下是綁定數(shù)據(jù)源控件;而另一種則是使用DataSource屬性進(jìn)行數(shù)據(jù)綁定,這種方法能夠?qū)ridView控件綁定到包括ADO.NET數(shù)據(jù)和數(shù)據(jù)讀取器內(nèi)的各種對(duì)象。使用DataSourceID進(jìn)行數(shù)據(jù)綁定,可以讓 GridView控件能夠自動(dòng)的處理分頁(yè)、選擇等操作,如圖 8-36所示。而使用DataSource屬性進(jìn)行數(shù)據(jù)綁定,則需要開(kāi)發(fā)人員通過(guò)編程實(shí)現(xiàn)分頁(yè)等操作。GridView控件能夠自定義
62、字段,單擊【添加列】按鈕,可以選擇相應(yīng)類型的列。在添加列選項(xiàng)中,GridView控件支持多種列類型的列,包括復(fù)選框、圖片、單選框、超鏈接等,如圖 8-37所示。r用特辛r白/德七宙燈圖8-36可選相應(yīng)操作圖8-37添加字段添加自定義字段,GridView控件支持從數(shù)據(jù)源中讀取相應(yīng)的數(shù)據(jù)源來(lái)配置相應(yīng)的字段,來(lái)讓開(kāi)發(fā)人員自定義的讀取數(shù)據(jù)源中的相應(yīng)字段來(lái)自定義開(kāi)發(fā),如圖 8-38所示。當(dāng)選擇從數(shù)據(jù)源中獲取文本,可 以通過(guò)Format的形式編寫相應(yīng)的文本。例如,從數(shù)據(jù)源中獲取title歹U,而顯示文本為“這是一個(gè)標(biāo)題:title值”,則可以編寫為“這是一個(gè)標(biāo)題:0",如圖8-39所示。圖8-
63、38添加字段圖8-39格式化字符串輸出配置完成后,GridView控件的HTML標(biāo)簽生成代碼如下所示:<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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 律師事務(wù)所助理合同審核與管理協(xié)議
- 高端影視作品拍攝移動(dòng)搖臂租賃及技術(shù)培訓(xùn)合同
- 體能訓(xùn)練機(jī)構(gòu)青少年體能發(fā)展服務(wù)合同
- 心理咨詢服務(wù)與心理產(chǎn)品研發(fā)合作長(zhǎng)期協(xié)議
- 外企中國(guó)區(qū)財(cái)務(wù)總監(jiān)任期及績(jī)效評(píng)價(jià)合同
- 技術(shù)咨詢與市場(chǎng)調(diào)研補(bǔ)充合同
- 高端商務(wù)區(qū)房產(chǎn)使用權(quán)及高端商業(yè)運(yùn)營(yíng)合作協(xié)議
- 網(wǎng)絡(luò)文學(xué)有聲劇制作配音棚租賃服務(wù)合同
- 高新技術(shù)生物醫(yī)藥企業(yè)知識(shí)產(chǎn)權(quán)質(zhì)押融資服務(wù)合同
- 《電子商務(wù)基礎(chǔ)課程教學(xué)課件》
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第2部分:混凝土工程
- 2024年天津卷高考語(yǔ)文真題含解析
- 感染性腹瀉患者護(hù)理常規(guī)
- 筆記分享的保安證考試試題及答案
- 2025年度臨床醫(yī)師定期考核必考復(fù)習(xí)題庫(kù)及答案(350題)
- 人工智能在情感分析中的應(yīng)用-深度研究
- 2025年中國(guó)女性私密健康白皮書
- 宣傳環(huán)境衛(wèi)生知識(shí)
- 泌尿外科學(xué)(醫(yī)學(xué)高級(jí))-案例分析題-9
- 銅冶煉過(guò)程清潔生產(chǎn)-洞察分析
- 2025-2030年中國(guó)廢鋁行業(yè)前景規(guī)劃及投資決策建議研究報(bào)告
評(píng)論
0/150
提交評(píng)論