動態(tài)網(wǎng)頁設(shè)計課件_第1頁
動態(tài)網(wǎng)頁設(shè)計課件_第2頁
動態(tài)網(wǎng)頁設(shè)計課件_第3頁
動態(tài)網(wǎng)頁設(shè)計課件_第4頁
動態(tài)網(wǎng)頁設(shè)計課件_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

項目6動態(tài)網(wǎng)頁設(shè)計知識技能目標(biāo)了解常用動態(tài)網(wǎng)頁設(shè)計技術(shù)掌握.net頁面連接與訪問數(shù)據(jù)庫的基本方法本單元理論授課6學(xué)時,上機操作6學(xué)時。1/45課次20課時2教具投影儀備注課題任務(wù)1動態(tài)網(wǎng)頁技術(shù)目的掌握ASP及其內(nèi)置對象的使用重點ASP常用內(nèi)置對象的使用難點無任務(wù)1動態(tài)網(wǎng)頁技術(shù)一、任務(wù)分析張先生的網(wǎng)站除了展示企業(yè)形象和宣傳產(chǎn)品外,因為還具有簡單的商品管理和客戶管理的功能,也就是說具有訪問后臺數(shù)據(jù)庫的能力,實際上是一個動態(tài)網(wǎng)站。另外,張先生還要求為他的網(wǎng)站設(shè)置一個網(wǎng)站計數(shù)器,從而隨時掌握網(wǎng)站訪問情況。下面我們就為張先生的網(wǎng)站設(shè)計添加這些功能。2/45二、相關(guān)知識(一)動態(tài)網(wǎng)頁技術(shù)簡介所謂“動態(tài)”,并不是指放在網(wǎng)頁中的動畫,動態(tài)網(wǎng)頁應(yīng)具備以下幾個特點:交互性:即網(wǎng)頁顯示內(nèi)容會根據(jù)用戶的要求和選擇而動態(tài)改變和響應(yīng),將網(wǎng)頁作為客戶端輸入界面,這是Web發(fā)展的大勢所趨。自動更新:可自動生成相應(yīng)頁面,從而大大節(jié)省工作量。因時因人而變:不同時間、不同人訪問時可以產(chǎn)生不同的頁面輸出。(二)常用動態(tài)網(wǎng)頁開發(fā)技術(shù)常用動態(tài)網(wǎng)頁技術(shù)有CGI、JSP、ASP/ASP.NET、PHP等,它們的特點如下:1.CGI在早期,動態(tài)網(wǎng)頁技術(shù)主要采用CGI技術(shù),即CommonGatewayInterface(公用網(wǎng)關(guān)接口)??梢允褂貌煌恼Z言編寫CGI程序,如VB、Delphi或C/C++等。將已經(jīng)寫好的CGI程序放在Web服務(wù)器上運行,再將其運行結(jié)果通過Web服務(wù)器傳輸?shù)娇蛻舳说臑g覽器上。通過CGI建立前臺Web頁面與后臺腳本程序之間的聯(lián)系,并且可以利用腳本程序來處理訪問者輸入的信息并據(jù)此作出響應(yīng)。這樣的編程方式比較困難且效率低下,因為每一次修改都必須重新將CGI程序編譯成可執(zhí)行文件,所以目前已經(jīng)較少使用。3/45ASP主要缺點如下:

Windows本身的所有問題都會一成不變的累加到ASP的身上。安全性、穩(wěn)定性、跨平臺性等問題都會因為與NT的捆綁而顯現(xiàn)出來。

ASP由于使用了COM組件會變的十分強大,但是由于WindowsNT系統(tǒng)最初的設(shè)計問題也會引發(fā)大量的安全性問題。只要在這樣的組件或是操作中稍不注意,外部攻擊就可以取得相當(dāng)高的權(quán)限而導(dǎo)致網(wǎng)站癱瘓或者數(shù)據(jù)丟失。

ASP是一種腳本語言,除了大量使用組件外,沒有辦法提高其工作效率。無法實現(xiàn)跨操作系統(tǒng)的應(yīng)用。關(guān)于這一點微軟的理由之一是“只有這樣才能發(fā)揮ASP最佳的能力”。其實正是Windows限制了ASP,ASP的概念本來就是為系統(tǒng)運行于一個多樣化環(huán)境而設(shè)計的。還無法完全實現(xiàn)一些企業(yè)級的功能:如完全的集群、負(fù)載均衡等。5/453.PHPPHP(HypertextPreprocessor)是一種HTML內(nèi)嵌式的語言(類似于IIS上的ASP)。而PHP獨特的語法混合了C、Java、Perl以及PHP的新語法,它可以比CGI或者Perl更快速的執(zhí)行動態(tài)網(wǎng)頁。PHP能夠支持諸多數(shù)據(jù)庫,如MSSQLServer、MySql、Sybase、Oracle等,它與HTML語言具有非常好的兼容性。PHP提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫接口,數(shù)據(jù)庫連接方便,兼容性好,擴展性強,可以進行面向?qū)ο缶幊獭HP的優(yōu)點如下:是一種能快速學(xué)習(xí)、跨平臺、有良好數(shù)據(jù)庫交互能力的開發(fā)語言。它語法簡單、書寫容易,同時Internet上也有大量的代碼可以共享。與Apache及其它擴展庫結(jié)合緊密。PHP與Apache可以以靜態(tài)編繹的方式結(jié)合起來,而與其它的擴展庫也可以用這樣的方式結(jié)合(Windows平臺除外)。這種方式的最大的好處就是最大利用了CPU時間和內(nèi)存,同時極為有效的利用了Apache的高性能的吞吐能力。良好的安全性。由于PHP本身的代碼開放所以它的代碼在許多工程師手中進行了檢測,同時它與Apache編繹在一起的方式也可以讓它具有靈活的安全設(shè)定。到現(xiàn)在為止,PHP具有了公認(rèn)的安全性能。6/45PHP的缺點如下:數(shù)據(jù)庫支持的極大變化。由于PHP的所有擴展接口都是獨立團隊開發(fā)的,同時在開發(fā)時為了形成相應(yīng)數(shù)據(jù)的個性化操作,所以PHP雖然支持許多數(shù)據(jù)庫,可是針對每種數(shù)據(jù)庫的開發(fā)語言都完全不同。安裝復(fù)雜。由于PHP的每一種擴充模塊并不是完全由PHP本身來完成,需要許多外部的應(yīng)用庫,如圖形需要gd庫,LDAP需要LDAP庫,……,這樣在安裝完成相應(yīng)的應(yīng)用后,再聯(lián)編進PHP中來。缺少企業(yè)級的支持。沒有組件的支持,那么所有的擴充就只能依靠PHP開發(fā)組所給出的接口。缺少正規(guī)的商業(yè)支持,這也是自由軟件一向的缺點。無法實現(xiàn)商品化應(yīng)用的開發(fā)。由于PHP沒有任何編繹性的開發(fā)工作,所有的開發(fā)都是基于腳本技術(shù)來完成的,所有的源代碼都無法編譯,所以完成的應(yīng)用只能是自己或是內(nèi)部使用,無法實現(xiàn)商品化。7/45(三)VisualStudio.NET簡介VisualStudio.NET(簡稱VS.NET)是微軟設(shè)計的獨立于操作系統(tǒng)的開發(fā)平臺,可以將它看成一套虛擬機,無論機器運行什么操作系統(tǒng),只要安裝了.NET框架,便可以運行.NET可執(zhí)行程序,享受基于.NET的各類服務(wù)??梢詮囊韵氯齻€方面來理解.NET:1.統(tǒng)一了編程語言無論用C#,還是C++,或是VB編寫,最終都被編譯為.NET中間語言IL。2.?dāng)U展了可執(zhí)行文件的格式可執(zhí)行文件中不再保存機器碼,而是IL指令和元數(shù)據(jù),部分結(jié)構(gòu)也被改變用于保存.NET的相關(guān)信息。3.改變了程序的運行方式Windows不再直接負(fù)責(zé)程序的運行,而由.NET框架進行管理??蚣苤械腏IT引擎負(fù)責(zé)在運行時將IL代碼即時編譯為本地匯編代碼再執(zhí)行。9/45下面介紹幾個關(guān)于VS.NET的基本概念。1..NET框架框架(Framework)一詞有幾種含義,在這里,它指的是創(chuàng)建和運行應(yīng)用程序的基礎(chǔ)。擁有這樣的基礎(chǔ)使得創(chuàng)建應(yīng)用程序變得更容易。雖然VB足夠靈活,可以提供這些不同的可擴展性機制,但這種靈活性仍然需要你學(xué)習(xí)幾種復(fù)雜的API體系結(jié)構(gòu)。你需要了解Win32如何工作,如何在VB中調(diào)用它們,還需要了解如何在VB中使用各種COM組件。最后,當(dāng)你使用Win32API、ADO(也可能使用許多其他COM組件)創(chuàng)建自己的VB應(yīng)用程序時,你需要管理這些應(yīng)用程序的部署以及它們的相關(guān)性。公共框架背后的想法就是要解決以上這些問題,并使得用戶創(chuàng)建健壯的應(yīng)用程序變得更加容易,而無須學(xué)習(xí)多種不同的API體系結(jié)構(gòu),并且無須部署和處理多種對象庫的版本問題。10/452. 什么是.NETFramework.NETFramework指的是構(gòu)成Microsoft.NET平臺開發(fā)基礎(chǔ)的一組技術(shù),其中的關(guān)鍵技術(shù)是運行時(Runtime)和類庫。運行時負(fù)責(zé)管理代碼,在執(zhí)行時向它們提供服務(wù),這與VB6.0運行時的作用類似。.NET程序設(shè)計語言通過一組公共的統(tǒng)一類來利用各種服務(wù)和特性。由于.NETFramework,部署VB.NET應(yīng)用程序變得更容易了。與VB6.0應(yīng)用程序不同,你無須配置各種相關(guān)性,如單獨的數(shù)據(jù)訪問庫、XML語法分析器和網(wǎng)絡(luò)API,因為所有這些功能都是.NETFramework的組成部分。3..NETFramework與VisualBasic.NET作為一個VB開發(fā)人員,你從.NETFramework獲得的最重要的益處是,可以使用一致的程序設(shè)計模型既直接又容易地訪問.NET平臺。這意味著,你可以使用VB.NET創(chuàng)建很難或不可能使用VB6.0創(chuàng)建的應(yīng)用程序。11/45(四)ASP及其內(nèi)置對象1.ASP概述ASP是ActiveServerPage的縮寫,利用ASP可以開發(fā)動態(tài)、交互、高效的Web服務(wù)器端應(yīng)用程序,并且能夠?qū)崿F(xiàn)復(fù)雜的Web應(yīng)用系統(tǒng),包括電子商務(wù)系統(tǒng)。2.ASP的處理流程任何一個Web服務(wù)器,只要安裝有ASP解釋程序,就支持ASP程序。ASP頁面是以.asp為擴展名的文本文件。當(dāng)瀏覽器向服務(wù)器請求.asp文件時,Web服務(wù)器調(diào)用ASP解釋程序,執(zhí)行所有需要在服務(wù)器端運行的腳本命令,并將執(zhí)行結(jié)果傳送給客戶端瀏覽器。顯然,在Web服務(wù)器端運行的腳本大大提高了程序的安全性,也不必?fù)?dān)心瀏覽器能否支持此腳本。3.ASP腳本ASP程序是由HTML標(biāo)記和腳本語言組合而成的。只要Web服務(wù)器上安裝了相應(yīng)語言的腳本引擎,就可以用任何腳本語言來編寫ASP程序中的腳本部分。常用的腳本語言有VBScript和JavaScript,這兩種腳本既可運行在服務(wù)器端,也可以運行在客戶端。服務(wù)器端腳本執(zhí)行完后,由Web服務(wù)器生成相應(yīng)的HTML頁面,送到客戶端瀏覽器顯示。13/45在ASP頁面中,服務(wù)器端腳本要用分隔符“<%”和“%>”括起來,或在<script>標(biāo)記中加“runat=server”屬性表示腳本要在服務(wù)器端執(zhí)行。例如:<scriptlanguage=”VBScript”runat=”server”>腳本代碼</script>客戶端腳本由瀏覽器處理,將腳本嵌入在<script>與</script>之間即可。例如:<scriptlanguage=“VBScript”>腳本代碼</script>例6.1ASP動態(tài)頁面示例。運行結(jié)果如下。<%@language=VBScript%><html><head><title>VBScript腳本</title></head><body><ScriptLanguage="VBScript">Dimctimectime=now()document.writectime&"是客戶端的時間"</script><br><%=(now())%>是服務(wù)器時間</body></html>14/454.ASP的包含文件可以使用#include語句將其他文件插入到當(dāng)前的ASP文件中。格式如下:#includevirtual|file=”文件名”(1)使用virtual關(guān)鍵字(虛擬目錄)用法:#includevirtual=”/Myapp/文件名”(2)使用file關(guān)鍵字(相對路徑)用法:#includefile=”Myapp/文件名”

如果要包含的文件在當(dāng)前網(wǎng)頁目錄的Myapp子目錄中,可以使用以上格式。通常,被包含的文件并不要求特定的擴展名,但習(xí)慣上使用.inc擴展名。ASP程序中可多次包含同一文件,被包含的文件也可以包含其他文件,只要不導(dǎo)致循環(huán)包含。如A包含B,則B不能再包含A,另外,文件也不能包含自身。15/452.Request對象使用Request對象可以訪問基于HTTP傳遞的所有信息。例如,value=Request.Form(Name),用于從HTML表單中取得用POST方法傳遞的變量Name的數(shù)據(jù)。實際上,根據(jù)用戶不同的提交方式,數(shù)據(jù)被分別存放到了Request對象的QueryString、Form、Cookies、ClientCertificate和ServerVariables等5個數(shù)據(jù)集合中。HTML表單提交時數(shù)據(jù)通過瀏覽器傳遞給服務(wù)器的Request對象,傳遞的方式有兩種:POST方法和GET方法。GET方法傳遞過來的數(shù)據(jù)保存在QueryString集合中,POST方法傳遞過來的數(shù)據(jù)保存在Form集合中。(1)Form集合例6.2Request對象的Form集合應(yīng)用示例。(ex6-2.asp)<html><head><title>Request對象的Form集合應(yīng)用示例</title></head><body>請?zhí)顚懩愕膼酆?lt;P><formmethod="POST"action=""><inputtype="text"name="hobby"size="20"><br><inputtype="checkbox"name="hobby"value="足球">足球<inputtype="checkbox"name="hobby"value="乒乓球">乒乓球<P><inputtype="submit"name="B1"value="提交"><inputtype="reset"name="B2"value="重填"><P></form>17/45<%‘第一種方法Response.Write"<br>直接顯示hobby集合中的所有的數(shù)據(jù)<br>"Response.WriteRequest.Form("hobby")&"<br>"‘第二種方法Response.Write"<br>用forEach…next分行顯示數(shù)據(jù)<br>"ForEachiInRequest.Form("hobby")Response.Writei&"<br>"next‘第三種方法Response.Write"<br>用for…next分行顯示數(shù)據(jù)<br>"Fori=1toRequest.Form("hobby").CountResponse.WriteRequest.Form("hobby")(i)&"<br>"next%></body></html>運行時文本框輸入“計算機”,并選中“乒乓球”項,其運行結(jié)果如上。18/45例6.3將例6.2的代碼修改如下,分別獲取表單中各控件的值:<html><head><title>Request對象的Form集合應(yīng)用示例</title></head><body>請?zhí)顚懩愕膼酆?lt;P><formmethod="POST"action=""><inputtype="text"name="text1"size="20"><br><inputtype="checkbox"name="hobby1"value="足球">足球<inputtype="checkbox"name="hobby2"value="乒乓球">乒乓球<P><inputtype="submit"name="B1"value="提交"><inputtype="reset"name="B2"value="重填"><P></form><%dimistristr=Request.Form("text1")ifRequest.Form("hobby1")<>"0"thenistr=istr&Request.Form("hobby1")endififRequest.Form("hobby2")<>"0"thenistr=istr&Request.Form("hobby2")endifResponse.Write"你的輸入和選擇是:"&istr%></body></html>在文本框輸入“aaa”,并選擇“乒乓球”,提交后顯示結(jié)果如上。19/45用GET方式傳遞的數(shù)據(jù)要用Request對象的QueryString集合來獲得。例如:<%dimn,p,sn=Request.QueryString("name")p=Request.QueryString("pwd")s=Request.QueryString("sex")Response.Write"你的輸入和選擇是:"&n&p&s%>

GET方法僅適合于提交較少的數(shù)據(jù)且安全性要求不高的場合。(3)Cookie集合Cookie集合是Request和Response對象常用的集合,可用來記錄客戶端用戶帳號、密碼等信息,以便再次訪問時不用再輸入這些信息。21/45Cookie是文本文件,是服務(wù)器在客戶端寫入的小文件,在Win2000/XP下被存放在“C:\DocumentandSettings\用戶名\Cookie”子目錄中。當(dāng)再次訪問站點時,站點頁面會在客戶端查找這些Cookie標(biāo)記,每個Web站點都有自己的標(biāo)記。用戶可以禁用這些Cookie,在IE瀏覽器中,使用【工具】菜單\【Internet選項】\【隱私】卡片\【高級】按鈕,點選“覆蓋自動Cookie處理”。如下。22/45例6.4Cookie集合應(yīng)用示例(ex7_21.asp)。

<%Response.Cookies("nike").Expires="2008-10-20"'指定Cookie的過期日期Response.Cookies("nike")=Request.Form("name")'將用戶名寫入Cookie中Response.Write"歡迎"&Request.Cookies("nike")&"光臨網(wǎng)上書店!"%><html><head><title>Cookie集合應(yīng)用示例</title></head><body><formmethod="POST"action="ex7_21.asp"><P><inputtype="text"name="name"size="20"><inputtype="submit"value="提交"name="B1"><inputtype="reset"value="重寫"name="B2"></form></body></html>運行時在文本框中輸入“張三”,點“提交”鈕,顯示結(jié)果如上。23/454.Session對象瀏覽Web站點時,使用Session對象可以為用戶保存指定的信息。用戶在Web應(yīng)用程序的網(wǎng)頁之間跳轉(zhuǎn)時,存儲在Session對象中的信息不會丟失,而是在整個用戶會話中一直存在,所以常用Session在各頁面間傳遞數(shù)據(jù)。例如,在登錄頁面輸入用戶名,再轉(zhuǎn)到index.asp頁面:Session("用戶名")="XXX"‘XXX代表輸入或選擇的用戶名Response.Redirect("index.asp")‘鏈接到index.asp頁面,并傳遞Session("用戶名")的值而在index.asp頁面初始化時可執(zhí)行如下判斷:IfSession("用戶名")="系統(tǒng)管理員"Then…elseResponse.Redirect("qxerr.asp")‘鏈接到非法用戶顯示頁面EndIf25/45有關(guān)Session對象的其他說明:(1)Session對象的TimeOut屬性用來指定應(yīng)用程序Session對象的超時時限(分鐘),默認(rèn)為20分鐘。如:<%Session.TimeOut=5%>(2)Session對象的Abandon方法用來刪除所有存儲在Session對象中的值并釋放這些對象的源。如:<%Session.Abandon%>會話超時時服務(wù)器也會刪除Session對象中的值。(3)Session和Cookie的區(qū)別是Session數(shù)據(jù)存儲在服務(wù)器端而Cookie數(shù)據(jù)存儲在客戶端(磁盤文件),因而Session的安全性較高。但Session只能在一個對話期的相應(yīng)頁面間共享信息,而Cookie卻不受此限制。(六)VisualBasic.NET語言基礎(chǔ)(略)26/45課次21課時2教具投影儀備注課題任務(wù)2Web數(shù)據(jù)庫訪問技術(shù)目的掌握使用VB.NET進行數(shù)據(jù)庫操作的基本技術(shù)重點VB.NET數(shù)據(jù)庫訪問技術(shù)難點無任務(wù)2Web數(shù)據(jù)庫訪問技術(shù)一、任務(wù)分析使用VB.NET為張先生的網(wǎng)頁添加客戶管理頁面。為便于講解,這里使用Access數(shù)據(jù)庫。二、相關(guān)知識(一)Access數(shù)據(jù)庫基礎(chǔ)知識(二)VB.NET連接Access數(shù)據(jù)庫的基本方法29/45三、任務(wù)實施【任務(wù)場景】為張先生的網(wǎng)頁添加管理用戶(或商品)數(shù)據(jù)表的功能?!静僮鳝h(huán)境】WindowsXP、VS.NET、IIS、SQLServer。【操作步驟】(一)建立工作目錄,例d:\abc,并使IIS主目錄指向該工作目錄;(二)建立數(shù)據(jù)庫及表,并將數(shù)據(jù)庫文件拷入工作目錄,如果是新建數(shù)據(jù)庫,按以下操作進行:1、啟動Access,新建數(shù)據(jù)庫yhgl.mdb,存放到工作目錄,密碼設(shè)為xxx。數(shù)據(jù)庫中有兩個表,結(jié)構(gòu)如下:(1)用戶表(user1)用戶名(char,10),密碼(char,8),權(quán)限(char,1),id(自動編號)(2)權(quán)限表(qx)權(quán)限(char,1),id(自動編號)2、手工往表中輸入若干條記錄30/45

(三)用戶管理頁面設(shè)計(yhgl.aspx)該頁面(效果見前頁圖片)具有對user1表進行查詢、添加、刪除和修改(只允許修改密碼和權(quán)限)記錄等功能。1、啟動,新建VisualBasic項目,模板為ASP.NETWeb應(yīng)用程序,位置為,即IIS主目錄d:\abc,確定后系統(tǒng)會自動在工作目錄下建立一個bin子目錄和若干系統(tǒng)文件,并且創(chuàng)建一個名為WebForm1.aspx的Web窗體頁面,在右側(cè)的"解決方案資源管理器”中右鍵單擊此頁面選擇“重命名”將其改名為yhgl.aspx;右鍵單擊此頁面選擇“將其設(shè)為起始頁”。2、設(shè)置數(shù)據(jù)庫連接串在配置文件Web.config中<configuration>后面加入如下的內(nèi)容:<appSettings>

<addkey="data"value="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="/><addkey="data1"value="yhgl.mdb"/><addkey="data2"value=";jetoledb:databasepassword=xxx"/></appSettings>

注:加入上面代碼能使各頁面從配置文件中通過key定義的各鍵值得到數(shù)據(jù)庫連接串。這里的三個鍵值data、data1、data2被讀到頁面后再組合成實際的連接串。31/453、為頁面添加兩個數(shù)據(jù)集對象在頁面窗口左側(cè)“工具箱”的“數(shù)據(jù)”欄中向頁面拖入兩個非類型化數(shù)據(jù)集(DataSet)對象,分別重命名為ds1和ds2。注:如未顯示出“工具箱”或“屬性”面板,可在“視圖”菜單中進行打開。4、前臺界面設(shè)計(1)從左側(cè)工具箱往頁面中加入1個DataGrid控件(DataSource屬性設(shè)為ds1,DataMember屬性設(shè)為user1,DataKeyField屬性為用戶名)(2)加入4個Label控件(Text屬性分別為用戶數(shù)、用戶名、密碼、權(quán)限)(3)加入2個TextBox控件(4)加入1個DropDownList控件(DataSource屬性設(shè)為ds2,DataMember屬性設(shè)為qx,DataValueField屬性為權(quán)限)(5)加入1個Button控件(Text屬性為“添加此記錄”)。(6)右擊DataGrid控件,選擇“屬性生成器”,在“列”卡片中取消“在運行時自動創(chuàng)建”復(fù)選框,為DataGrid控件添加3個模板列(頁眉文本分別為用戶名、密碼、權(quán)限)和2個按鈕列(“編輯\更新\取消”和“刪除”,PushButton類型)。再對“分頁”、“格式”、“邊框”三個卡片分別進行相關(guān)設(shè)置。32/45

其中第1個模板列(用戶名)是一個標(biāo)簽,HTML代碼如下:<asp:TemplateColumnHeaderText="用戶名"><ItemStyleWidth="120px"></ItemStyle><ItemTemplate><asp:labelid="Label7"runat="server"text='<%#DataBinder.Eval(Container,"DataItem.用戶名")%>'></asp:label></ItemTemplate></asp:TemplateColumn>將此代碼粘貼到頁面的HTML代碼相應(yīng)位置。第2個模板列(密碼)平時為標(biāo)簽,編輯時為文本框,HTML代碼如下:<asp:TemplateColumnHeaderText="密碼"><ItemStyleWidth="280px"></ItemStyle><ItemTemplate><asp:labelid="Label5"runat="server"text='<%#DataBinder.Eval(Container,"DataItem.密碼")%>'></asp:label></ItemTemplate><EditItemTemplate><asp:TextBoxid="Textbox3"runat="server"Width="276"Text='<%#DataBinder.Eval(Container,"DataItem.密碼")%>'></asp:TextBox></EditItemTemplate></asp:TemplateColumn>將此代碼粘貼到頁面的HTML代碼相應(yīng)位置。33/45

第3個模板列(權(quán)限)平時為標(biāo)簽,編輯時為下拉列表框,HTML代碼如下:<asp:TemplateColumnHeaderText="權(quán)限"><ItemStyleWidth="120px"></ItemStyle><ItemTemplate><asp:labelid="xb0"runat="server"text='<%#DataBinder.Eval(Container,"DataItem.權(quán)限")%>'></asp:label></ItemTemplate><EditItemTemplate><asp:DropDownListid="xb1"runat="server"width="112"DataSource="<%#ds2%>"DataMember="qx"DataTextField="權(quán)限"DataValueField="權(quán)限"></asp:DropDownList></EditItemTemplate></asp:TemplateColumn>將此代碼粘貼到頁面的HTML代碼相應(yīng)位置。34/45

5、后臺代碼設(shè)計(1)雙擊頁面空白處,在頁面代碼最前面加入下列代碼以導(dǎo)入類名空間:ImportsSystem.Data.OleDb

(2)從配置文件中讀取并生成數(shù)據(jù)庫連接串在頁面裝載(Page_Load)代碼前面加入以下代碼:DimconnstrAsString=System.Configuration.ConfigurationSettings.AppSettings("data")'讀取鍵值Dimconnstr1AsString=System.Configuration.ConfigurationSettings.AppSettings("data1")Dimconnstr2AsString=System.Configuration.ConfigurationSettings.AppSettings("data2")Dimconnstr3AsString=connstr+System.Web.HttpContext.Current.Server.MapPath(connstr1)+connstr2DimconnectionAsNewOleDbConnection(connstr3)'建立連接35/45

(3)在頁面裝載(Page_Load)時執(zhí)行以下代碼:IfNotIsPostBackThenDimadp1AsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查詢適配器Dimadp2AsNewData.OleDb.OleDbDataAdapter("select*fromqx",connection)'建立查詢適配器connection.Open()'打開數(shù)據(jù)連接adp1.Fill(ds1,"user1")'查詢命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds1中DataGrid1.DataBind()'數(shù)據(jù)綁定adp2.Fill(ds2,"qx")'查詢命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds2中DropDownList1.DataBind()Label1.Text="用戶數(shù):"&ds1.Tables("user1").Rows.CountEndIf36/45

(4)增加翻頁功能第1步:在代碼中添加以下過程(DataGrid頁號變化時觸發(fā))SubGrid_Change(ByValsenderAsObject,ByValeAsDataGridPageChangedEventArgs)DataGrid1.CurrentPageIndex=e.NewPageIndexDataGrid1.EditItemIndex=-1'取消編輯狀態(tài)DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)connection.Open()'打開數(shù)據(jù)連接adp.Fill(ds1,"user1")'命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds1中DataGrid1.DataBind()EndSub第2步:在HTML代碼中<asp:DataGrid>標(biāo)記行尾部(尖括號內(nèi))加入OnPageIndexChanged="grid_change",以使點擊頁碼按鈕時能調(diào)用grid_change過程37/45

(5)為“添加此記錄”按鈕設(shè)置點擊事件代碼:DataGrid1.EditItemIndex=-1'取消編輯狀態(tài)Dimx,y,zAsStringx=TextBox2.Texty=DropDownList1.SelectedValue.TrimIfTextBox1.Text=""ThenResponse.Write("<scriptlanguage='javascript'>alert('用戶名不能空白!')</script>")DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查詢適配器connection.Open()'打開數(shù)據(jù)連接adp.Fill(ds1,"user1")'命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds1中TextBox2.Text=xDropDownList1.Items.FindByText(y).Selected=TrueLabel1.Text="用戶數(shù):"&ds1.Tables("user1").Rows.CountElse38/45DimsqlstrAsString="insertintouser1values('"+TextBox1.Text+"','"+TextBox2.Text+"','"+DropDownList1.SelectedValue+"',1)"DimcmdAsNewData.OleDb.OleDbCommand(sqlstr,connection)DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查詢適配器Dimadp1AsNewData.OleDb.OleDbDataAdapter("select*fromuser1where用戶名='"+TextBox1.Text+"'",connection)'建立查詢適配器connection.Open()'打開數(shù)據(jù)連接adp1.Fill(ds1,"user1")'把對user1查詢的結(jié)果埴充到數(shù)據(jù)集ds1中Ifds1.Tables("user1").Rows.Count=0Then'如果表中無此用戶cmd.ExecuteNonQuery()'執(zhí)行insertinto命令,添加用戶adp.Fill(ds1,"user1")'把對user1查詢的結(jié)果埴充到數(shù)據(jù)集ds1中DataGrid1.DataBind()Label1.Text="用戶數(shù):"&ds1.Tables("user1").Rows.CountTextBox2.Text=""ElseResponse.Write("<scriptlanguage='javascript'>alert('此用戶名已被使用,請另輸一個!')</script>")EndIfTextBox1.Text=""EndIf39/45(6)為“編輯”和“刪除”按鈕添加事件代碼SubGrid_ItemCommand(ByValsourceAsSystem.Object,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)Ife.CommandName="Edit"ThenDataGrid1.EditItemIndex=e.Item.ItemIndexDimadp1AsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)'建立查詢適配器Dimadp2AsNewData.OleDb.OleDbDataAdapter("select*fromqx",connection)'建立查詢適配器connection.Open()'打開數(shù)據(jù)連接adp1.Fill(ds1,"user1")'命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds1中adp2.Fill(ds2,"qx")'命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds2中DataGrid1.DataBind()EndIfIfe.CommandName="Cancel"ThenDataGrid1.EditItemIndex=-1'取消編輯狀態(tài)DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)connection.Open()adp.Fill(ds1,"user1")‘查詢命令執(zhí)行的結(jié)果填充到數(shù)據(jù)集ds1中DataGrid1.DataBind()EndIf40/45Ife.CommandName="Delete"ThenDataGrid1.EditItemIndex=-1'取消編輯狀態(tài)DimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)DimcmdAsNewData.OleDb.OleDbCommand("deletefromuser1where用戶名='"+DataGrid1.DataKeys(e.Item.ItemIndex)+"'",connection)‘建立刪除命令connection.Open()cmd.ExecuteNonQuery()'執(zhí)行刪除命令adp.Fill(ds1,"user1")IfInt(ds1.Tables("user1").Rows.Count/10)=ds1.Tables("user1").Rows.Count/10ThenIfDataGrid1.CurrentPageIndex>0ThenDataGrid1.CurrentPageIndex=DataGrid1.CurrentPageIndex-1EndIfEndIfDataGrid1.DataBind()Label1.Text="用戶數(shù):"&ds1.Tables("user1").Rows.CountEndIf41/45Ife.CommandName="Update"ThenDimxmAsTextBoxDimxxbAsDropDownListDimxxb2AsStringDimadpAsNewData.OleDb.OleDbDataAdapter("select*fromuser1",connection)connection.Open()adp.Fill(ds1,"user1")xm=e.Item.FindControl("TextBox3")xxb=e.Item.FindControl("xb1")xxb2=xxb.SelectedValueDimsqlstrAsString=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論