版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
6.1.1Web窗體簡介 如果您以前使用VB編寫過Windows窗體程序,那么您對Web窗體就不會感到陌生。其實Web窗體與Windows窗體類似,都用于創(chuàng)建用戶界面,只不過一個用于Web,在瀏覽器中展示其界面,一個用于Windows。 在ASP.NET中,對Web窗體編程分成了兩個不同的部分――可視元素和編程邏輯。可視元素就是Web窗體頁,它是靜態(tài)文本、HTML和ASP.NET服務器控件的容器。它存儲在以“.aspx”為擴展名的文件中。我們可以使用VisualStudio.NETWeb窗體設計器和ASP.NET服務器控件來設計Web窗體頁。 編程邏輯就是一些與Web窗體進行交互的代碼,其中包括Web窗體和它所包含控件的事件處理程序,它可以與可視元素位于同一個文件中,也可以與可視元素位于不同的文件中。如果位于同一個文件中,該文件的擴展名仍然為“.aspx”;如果位于不同的文件中,則該文件稱作“代碼隱藏”文件,“代碼隱藏文件”的擴展名與您使用的編程語言有關。如果您使用VisualBasic.NET編寫代碼,則“代碼隱藏文件”的擴展名為“.aspx.vb”。如果您使用VisualC#.NET編寫代碼,則“代碼隱藏文件”的擴展名為“.aspx.cs”。6.1Web窗體6.1.2Web窗體處理模型 如果可視元素和編程邏輯分別位于兩個獨立的文件中,那么他們是如何共同工作的?其原理非常簡單,即當應用程序運行時,它們會組合在一起。項目中的所有代碼隱藏類文件都被編譯成一個動態(tài)鏈接庫(DLL)文件,并且Web頁會動態(tài)產(chǎn)生一個派生自Page類(Page類存在于System.Web.UI名稱空間中)的新類。而Web窗體的.aspx
頁文件,只有當用戶第一次瀏覽該頁時,才由ASP.NET產(chǎn)生一個代表該頁的.NET類文件,然后再編譯成另一個動態(tài)鏈接庫(DLL)文件。在生成.NET類文件時二者發(fā)生關聯(lián),即該.NET類是從第一個DLL文件中的代碼后置類繼承而來。這樣當用戶請求網(wǎng)頁時,服務器上的DLL文件就會產(chǎn)生網(wǎng)頁的HTML輸出,就像一個本地運行的程序一樣與用戶進行交互。如果可視元素和編程邏輯位于同一個文件中,其原理更加簡單。當用戶第一次請求網(wǎng)頁時,由ASP.NET產(chǎn)生一個代表該頁的.NET類文件,該類直接繼承于Page類。然后再編譯成一個動態(tài)鏈接庫(DLL)文件,由DLL產(chǎn)生網(wǎng)頁的HTML輸出。 總之,在該模型中,只要Web窗體頁受到請求,此DLL文件就會在服務器上運行。在運行時,此DLL文件通過動態(tài)創(chuàng)建輸出并將其發(fā)送回瀏覽器或客戶端設備來處理傳入請求和響應。如果該頁包含Web服務器控件,則派生的頁類用作控件的容器??丶膶嵗谶\行時創(chuàng)建,并且同樣地為瀏覽器呈現(xiàn)輸出。實際上,整個Web窗體頁是一個可執(zhí)行程序,該程序生成將被發(fā)送回瀏覽器或客戶端設備的輸出。 另外,您可以在.aspx文件中通過Page指令的Codebehind、Inherits和Src
屬性指定.aspx
文件與其代碼隱藏文件的關系。如:
<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="TestCommand.WebForm1"%>
其中,Codebehind僅由VisualStudio.NET的Web窗體設計器使用,它引用包含頁類的文件的名稱。如上例中的WebForm1.aspx.vb文件。如果不是使用VisualStudio.NET生成.aspx文件,則使用src屬性指名包含頁類的文件名稱。Inherits屬性標識Web窗體頁需要從哪個類派生,如上例中的TestCommand.WebForm1類。注意: 如果將包含Src
屬性Web窗體頁導入到VisualStudio.NET中,則設計器將引發(fā)錯誤6.1.3Web窗體頁面狀態(tài) 在客戶端和服務器端之間進行通信時,使用HTTP協(xié)議。由于HTTP協(xié)議是一個無狀態(tài)協(xié)議,因此每當在往返過程中處理一頁時,該頁即被損壞和重新呈現(xiàn),并且有關Web窗體頁以及該頁上控件的狀態(tài)有關的所有信息均將丟失。這對我們編寫Web應用程序造成極大困難。為了解決這個問題,ASP.NET提供了視圖狀態(tài)這一機制。它利用Page類的ViewState保存頁面和頁面中各個控件的狀態(tài),如哪個單選按鈕被選中了、文本框中包含什么文字等。 使用視圖狀態(tài)的好處是:不占用服務器資源。視圖狀態(tài)在頁面隱藏域中保存。實現(xiàn)機理非常簡單。自動保持頁和控件的狀態(tài)。增強的安全功能。視圖狀態(tài)中的值是散列的、壓縮的并且是為Unicode實現(xiàn)而編碼的,這意味著比隱藏域具有更高的安全性狀態(tài)。注意: 為了使用視圖狀態(tài),Web窗體必須具有服務器表單元素,即“<formrunat="server">”。動手做:[例6-1](6-1.aspx)視圖狀態(tài)<html><TITLE>[例6-1]視圖狀態(tài)</TITLE><body><formrunat="server">
請輸入您的姓名:<BR><asp:textboxid="lTitle"runat=server/><asp:buttonid="Submit"Text="確認"runat=server/></form></body></html>點評:
該段代碼包含一個文本框和一個按鈕。為了查看視圖狀態(tài)的實現(xiàn),可以查看服務器發(fā)給瀏覽器的HTML代碼。選擇IE瀏覽器的【查看】|【源文件】菜單項,得到如下所示HTML代碼:<html><TITLE>[例6-1]視圖狀態(tài)</TITLE><body><formname="_ctl0"method="post"action="6-1.aspx"id="_ctl0"><inputtype="hidden"name="__VIEWSTATE"value="dDwxNDg5OTk5MzM7Oz4qPkqoW5XWb44RIPPi/mtTOryJvw=="/>
請輸入您的姓名:<BR><inputname="lTitle"type="text"id="lTitle"/><inputtype="submit"name="Submit"value="確認"id="Submit"/></form></body></html>從HTML代碼中可以看到一個名字叫“__VIEWSTATE”的隱藏域,它就是視圖狀態(tài)。它的值是“dDwxNDg5OTk5MzM7Oz4qPkqoW5XWb44RIPPi/mtTOryJvw==”。由于采用了加密措施,所以我們無法知道其中的含義。但服務器通過解密后,可以恢復它的值,可以知道它的含義。
6.2ASP.NET事件處理ASP.NET把事件驅(qū)動由Windows程序引入到Web程序中,使得程序設計模式發(fā)生了根本改變。只有當事件發(fā)生時,才會有相應的處理,才會觸發(fā)相應的代碼。沒有事件發(fā)生時,任何代碼都不會被執(zhí)行。ASP.NET事件驅(qū)動與Windows事件驅(qū)動還有一些差別,Windows程序的事件引發(fā)和處理一般都位于同一個位置,而基于客戶端的Web應用程序事件本身與處理該事件的位置是分離的。這樣APS.NET就要求在客戶端引發(fā)的事件,由客戶端來捕獲,然后通過HTTP將事件消息傳輸?shù)椒掌?,在服務器上調(diào)用相應的事件處理程序來響應此事件。ASP.NET事件一般分為兩類:在頁面處理過程的某一階段自動引發(fā)的頁面事件;在客戶端被觸發(fā)的服務器控件事件。下面就分別講述。6.2.1頁面事件
頁面事件在頁面每次加載時都會發(fā)生,是由ASP.NET頁框架引發(fā)的,不需用戶提供事件綁定。ASP.NET頁框架是分階段對Web窗體頁進行處理的。在Web窗體頁處理的每一階段,都可能引發(fā)事件,以及運行與該事件相對應的事件處理程序。因此通過向這些事件處理程序添加代碼可以更好地控制Web窗體頁。下面就介紹一下頁面事件,以及與之相應的Web窗體頁處理階段。1.Page_Init事件該事件發(fā)生在ASP.NET頁框架初始化階段,即在該頁第一次被載入時發(fā)生的。通常使用該事件為Web窗體頁中的各個控件進行初始化工作。其語法形式為:SubPage_Init(senderAsObject,eAsEventArgs)
事件處理代碼EndSub其中,sender事件參數(shù)為事件發(fā)出者,e事件參數(shù)為事件所包含的數(shù)據(jù)。所有的Web頁事件處理程序都有這兩個參數(shù),第一個參數(shù)的類型為Object,第二個參數(shù)為EventArgs類型或其派生類。2.Page_Load
事件該事件在Web頁被載入瀏覽器時發(fā)生。通常也使用該事件為Web窗體頁中的各個控件進行初始化工作。但它與Page_Init事件不同,Page_Init事件是在頁面第一次載入時發(fā)生的,當頁面重入時就不會發(fā)生了。而Page_Load事件在頁面每次載入時都會發(fā)生。另外,他們的執(zhí)行順序也不同,Page_Init事件先執(zhí)行,Page_Load事件后執(zhí)行。其語法形式為:SubPage_Load(senderAsObject,eAsEventArgs)
事件處理代碼EndSub有時,需要在Page_Load事件中區(qū)分頁面是第一次被載入,還是重入。ASP.NET為Page類提供了一個IsPostBack屬性,當該屬性為False時,表示頁面是第一次被載入,否則是重入。如:SubPage_Load(senderAsObject,eAsEventArgs) IfnotPage.IsPostBackThen ‘第一次被載入
Else ‘重入
EndIfEndSubPage_Unload
事件該事件在Web頁被清除時發(fā)生。通常在該事件中做一些善后工作,如關閉打開的文件、斷開與數(shù)據(jù)庫的連接、清理對象等。其語法形式為:SubPage_Unload(senderAsObject,eAsEventArgs)
事件處理代碼EndSub
動手做:[例6-2](6-2.aspx)頁面事件<HTML><TITLE>[例6-2]頁面事件</TITLE><SCRIPTLanguage="VB"RUNAT="SERVER">SubPage_Load(senderAsObject,eAsEventArgs) web.Text="網(wǎng)絡" news.Text="報紙" tv.Text="電視" web.checked=true lTitle.Text="請選擇您獲取信息的途徑:"EndSubSubSubmit_Onclick(senderAsObject,eAsEventArgs) EndSub </Script><BODY><FORMRUNAT="SERVER"><asp:labelid="lTitle"runat=server/><BR><asp:radiobuttonid="web"groupname="path"runat=server/><BR><asp:radiobuttonid="news"groupname="path"runat=server/><BR><asp:radiobuttonid="tv"groupname="path"runat=server/><BR><asp:buttonid="Submit"Text="確認"onclick="Submit_Onclick"runat=server/><p><asp:labelid="lDisplay"forecolor="Blue"font-size="20pt"runat=server/></FORM></BODY></HTML>點評:該段代碼為Web頁面添加了Page_Load事件。在該事件中,為頁面的靜態(tài)文本標簽lTitle設置了初始值“請選擇您獲取信息的途徑:”;為單選按鈕web、news和tv添加文本值“網(wǎng)絡”、“報紙”和“電視”,并選中web單選按鈕。運行結果如圖6-1所示。
服務器控件事件是在客戶端被客戶所引發(fā)的,在服務器端被處理。它包括回發(fā)事件和非回發(fā)事件。回發(fā)事件是指事件發(fā)生后,客戶端會立即把事件提交到服務器。非回發(fā)事件是指事件被引發(fā)后不會立即被發(fā)送到服務器端,而是由控件在客戶端緩存這些事件,直到下一次頁面提交時才發(fā)送,這時會引發(fā)和處理所有掛起的事件。要想使控件的事件能夠被立即響應,應該使控件具有回發(fā)事件能力,即設置控件的AutoPostBack
屬性為True。例如,默認情況下,CheckBox復選框控件的CheckedChange事件不會導致該頁被提交。但是,通過將該控件的AutoPostBack屬性設置為true,則當用戶單擊復選框時,CheckedChange事件會立即發(fā)送到服務器并被處理。由于服務器控件事件引發(fā)和處理位置不同,需要在服務器和客戶端之間傳遞,會占用大量帶寬,而且影響效率。因此常見服務器控件的事件都經(jīng)過優(yōu)化,一些不必要的事件都被去除掉,減少了服務器控件的事件數(shù)量。而且不同的控件可能具有不同的事件,因此服務器控件的事件會在6.3節(jié)講解具體控件時,再詳細講解。為服務器控件添加事件最簡單的方法就是在服務器控件的標記內(nèi)把事件綁定到事件處理程序上,然后在該Web頁上添加一個事件處理程序?;蛘呷绲谝徽?.3.2節(jié)所示的那樣,在VisualStudio.NET中為服務器控件添加事件。6.2.2服務器控件事件動手做:[例6-3](6-3.aspx)服務器控件事件<HTML><TITLE>[例6-3]服務器控件事件</TITLE><SCRIPTLanguage="VB"RUNAT="SERVER">SubPage_Load(senderAsObject,eAsEventArgs) IfnotPage.IsPostBackThen web.checked=true EndIfEndSubSubSubmit_Onclick(senderAsObject,eAsEventArgs) DimmessageAsString="您獲取信息的途徑是:" ifweb.checkedthenmessage=message&"網(wǎng)絡" ifnews.checkedthenmessage=message&"報紙" iftv.checkedthenmessage=message&"電視" lDisplay.Text=messageEndSub </Script><BODY><FORMRUNAT="SERVER">
請選擇您獲取信息的途徑:<BR><Inputtype="radio"id="web"name="path"runat=server>網(wǎng)絡<BR><Inputtype="radio"id="news"name="path"runat=server>報紙<BR><Inputtype="radio"id="tv"name="path"runat=server>電視<BR><Inputtype="button"id="Submit"Value="確認"onserverclick="Submit_Onclick" runat=server/><p><asp:labelid="lDisplay"forecolor="Blue"font-size="20pt"runat=server/></FORM></BODY></HTML>點評:該段代碼為Web頁面添加了一個服務器按鈕控件的單擊事件onserverclick。當用戶單擊“確定”按鈕后,就會引發(fā)該事件。在該事件中,根據(jù)選中的單選按鈕確定“獲取信息的途徑”。另外,在頁面第一次載入時,通過Page_Load事件設定單選按鈕的默認選中狀態(tài)。運行結果如圖6-2所示。
ASP.NET之所以能夠快速建立強大的Web應用程序,就在于它提供許多內(nèi)置服務器控件。通過利用這些控件的屬性、方法和事件編程,就可以完成以前需要許多行HTML代碼才能完成的工作。而且ASP.NET還允許我們使用第三方控件和自定義控件,以增強ASP.NET應用程序的功能和靈活性。ASP.NET內(nèi)置服務器控件包括HTML服務器控件、Web服務器控件和驗證控件。本節(jié)就詳細介紹ASP.NETHTML服務器控件。
6.3HTML服務器控件6.3.1HTML服務器控件基本知識HTML控件是與HTML標記相對應的服務器端控件,它是在HTML標記基礎上加上RUNAT="SERVER"屬性后形成的,因此二者的屬性基本相同。那么我們?yōu)槭裁催€要使用HTML控件呢?因為我們不能利用程序直接控制標準HTML標記的屬性、方法和事件。以前要想控制這些HTML標記,必須另外學習其它如JavaScript等程序語言才行?,F(xiàn)在ASP.NET通過將HTML標記轉換為HTML服務器控件,就可以使我們在服務器端通過編程來控制這些HTML服務器控件,從而可以在運行時控制頁面的外觀和功能。通過將HTML標記對象化,可以使我們使用VB.NET和C#語言來編寫ASP.NET動態(tài)網(wǎng)頁程序。而且與早期的ASP相比,可以減少許多代碼,使程序編寫和維護變得更加容易。
HTML控件與HTML標記不同之處,在于HTML控件多了ID以及Runat屬性。ID屬性用于標識該控件,以便在服務器端使用該控件。如果不需要在服務器端控制該控件,可以不設定ID屬性。而Runat
屬性表示這個對象是在服務器端執(zhí)行,所有的HTML控件都必須加上這個屬性。例如,生成一個HTML服務器文本框控件:
<inputtype="text"id="user"value="用戶名"runat="Server">注意:必須把HTML服務器控件包含在含有runat="server"的<form>標記中。要求所有HTML元素要正確結束,結束的方式有兩種,結束標記和后綴“/”。為了在代碼中引用控件還必須設置控件的id屬性6.3.2使用HTML服務器控件HTML服務器控件與HTML標記的對應關系HTML服務器控件的共有屬性HTML服務器控件使用方法HTML服務器控件實例HTML服務器控件與HTML標記的對應關系見表6-1
3.HTML服務器控件使用方法使用HTML服務器控件有兩種方式:一種是利用VisualStudio.Net集成開發(fā)環(huán)境,可視化地使用HTML服務器控件;一種是直接書寫代碼,用代碼生成和使用控件。在第一章中我們已經(jīng)介紹了利用VisualStudio.Net集成開發(fā)環(huán)境,可視化地使用HTML控件,這里就不再贅述了。下面主要介紹用代碼生成和使用HTML控件。使用ASP.NETHTML服務器控件與使用標準的HTML標記幾乎相同,只需要添加runat屬性和id屬性。例如:<inputtype="text"id="pwd"value="密碼"runat="Server">除了runat和id屬性外,控件還包含其它屬性,這些屬性可以在標記中直接添加,也可以通過編程添加。例如,向文本框添加MaxLength屬性:<inputtype="text"id="pwd"value="密碼"MaxLength=10runat="Server"/>向文本框添加Mode屬性、Rows屬性:<asp:TextBoxid="note"Text="留言"Mode="Multiline"Rows="6"runat="Server"/>一般情況下,控件都要引發(fā)事件,以便與用戶進行交互,實現(xiàn)動態(tài)網(wǎng)頁功能。這時就需要為控件添加事件。添加事件的方法如6.2節(jié)所示。4.HTML服務器控件實例由于HTML控件基本上與HTML標記相同,其使用也基本相同,因此僅舉一個實例演示HTML服務器控件的使用。 動手做:[例6-4](6-4.aspx)編寫“求租房屋信息”Web頁面<html><head><title>[例6-4]編寫"求租房屋信息"Web頁面</title><scriptlanguage="VB"runat="server">SubSubmitBtn_Click(senderAsObject,eAsEventArgs) DimtempAsStringTable2.Rows(0).Cells(0).InnerText=Name.ValueTable2.Rows(0).Cells(1).InnerText=Age.Value IFMan.CheckedThen temp="男" Else temp="女" EndIFTable2.Rows(1).Cells(0).InnerText=temp IFMarried.CheckedThen temp="合租" Else temp="不合租" EndIFTable2.Rows(1).Cells(1).InnerText=tempTable2.Rows(1).BgColor="Gainsboro"Table2.Rows(2).Cells(0).InnerText=Select1.Items(Select1.SelectedIndex).ValueTable2.Rows(2).Cells(1).InnerText=Select2.Items(Select2.SelectedIndex).ValueTable2.Rows(3).Cells(0).InnerText=TextArea1.ValueTable2.Rows(3).BgColor="Gainsboro"Table2.Visible=trueEndSub</script></head><body><h3>求租房屋信息:</h3><formrunat=server> <imgsrc="include\line2.gif"alt="image1"align=middlerunat="Server"><tableid="Table1"CellPadding=5CellSpacing=0Border="1"BorderColor="white"runat="server"><tr><tdalign=right>姓名:</td><td><inputtype=textid="Name"maxlength=10size=8runat="Server"/></td><tdalign=right>年齡:</td><td><inputtype=textid="Age"maxlength=4size=2runat="Server"/></td></tr> <tr><tdalign=right>性別:</td>
<td><inputtype=radioid="Man"checked=truename=sexrunat="Server"/>男
<inputtype=radioid="Woman"checked=falsename=sexrunat="Server"/>女</td><tdalign=right>是否合租:</td><td><inputtype=checkboxid="Married"checked=falserunat="Server"/></td></tr><tr><tdalign=right>地點:</td><td><selectid="Select1"Multiple="False"runat="server"> <optionvalue="沒有要求">沒有要求</option> <optionvalue="河東區(qū)"Selected="True">河東區(qū)</option> <optionvalue="河西區(qū)">河西區(qū)</option> <optionvalue="河北區(qū)">河北區(qū)</option> </select></td><tdalign=right>房型:</td><td><selectid="Select2"Multiple="False"runat="server"> <optionvalue="沒有要求">沒有要求</option> <optionvalue="獨單"Selected="True">獨單</option> <optionvalue="偏單">偏單</option> <optionvalue="三居室">三居室</option> </select></td></tr>
<tr><tdalign=right>備注:</td><tdcolspan="3"><textareaid="TextArea1"cols=35rows=4runat=server/></td></tr><tr><td></td><td><inputtype=submitvalue="提交"OnServerClick="SubmitBtn_Click"runat=server><inputtype=resetvalue="取消"runat=server></td></tr></table> <HR><tableid="Table2"CellPadding=5CellSpacing=0Border="2"BorderColor="blue"align=leftVisible=falserunat="server"><tr><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td></tr></table></form></body></html>點評:
該例子使用表格Select1來布局Web頁面,使Web頁面更美觀、各控件布局更合理。使用兩個HtmlInputText控件接收用戶輸入的姓名和年齡。使用兩個HtmlInputRadioButton控件接受用戶對性別的選擇。使用一個HtmlInputCheckBox控件接受用戶是否合租的選擇。使用兩個HtmlSelect控件接受用戶對坐落地點和房型的選擇。使用HtmlTextArea控件接受用戶錄入備注信息。表格Select2在用戶單擊“提交”按鈕之前并不顯示,可以通過設置HtmlTable控件的Visible屬性為false來實現(xiàn)。當用戶單擊“提交”按鈕后,服務器端響應按鈕單擊事件,并在事件響應程序SubmitBtn_Click中獲取Web頁面上各控件的值,然后顯示在表格Select2中。運行結果如圖6-3所示W(wǎng)eb服務器控件是ASP.NET提供的一類新型控件,它并不一一映射到HTML服務器控件,而是定義為抽象控件,提供功能豐富的對象模型。它能夠檢測瀏覽器的功能,并根據(jù)不同瀏覽器創(chuàng)建適當?shù)妮敵觥τ谀承┛丶?,還可以使用模板來自定義控件的外觀,可以指定控件的事件是立即發(fā)送到服務器,還是先緩存然后在提交Web窗體時引發(fā)。因此,Web服務器控件類型更豐富,內(nèi)置功能更多,可編程操控性更好。下面就介紹一些常用Web服務器控件。6.4Web服務器控件6.4.1按鈕控件在Web服務器控件中,常用的按鈕控件有Button控件和ImageButton控件。1.Button控件Button控件是一種常用的Web服務器控件,又稱為按鈕控件。它常用于執(zhí)行一個命令或提交Web頁。在工具箱中Button控件的圖示為。雙擊或用鼠標拖動工具箱中的Button按鈕,可將按鈕加入到Web窗體,重復該操作可加入多個按鈕。加入到窗體的按鈕可用鼠標拖放到窗體的任意位置并可以改變按鈕的大小。(1)Button控件的語法格式<asp:Buttonid="Button控件的標識符"Text="按鈕上顯示的文本"CommandName="與按鈕關聯(lián)的命令名"CommandArgument="命令的附加信息"CausesValidation="指示是否停用驗證(true|false)"OnClick="事件響應函數(shù)名"runat="server"/>(2)Button控件的常用屬性通常使用Button控件的屬性設置按鈕的外觀特征,Button控件的常用屬性如下:ID:控件的標識符。在程序中使用該值標識控件。Text:設置按鈕上顯示的標題文字。BackColor:設置按鈕控件的背景色。BoderStyle:設置按鈕控件的邊框的樣式,有10種選擇。如圖6-4所示。圖6-4按鈕控件的邊框樣式BoderColor:設置按鈕控件的邊框的顏色ForeColor:設置按鈕控件的所包含文字或圖形的前景色。Font:設置按鈕控件標題文字的字體。Visible屬性:設置按鈕控件是否可見。(3)Button控件的常用事件按鈕的常用事件只有一種:Click事件:當用戶用鼠標單擊Button控件時,引發(fā)該事件。注意:按鈕不支持DblClick事件。2.ImageButton控件
ImageButton控件是一種常用的Web服務器控件,它與Button控件幾乎一樣,只是外觀有所不同。在工具箱中ImageButton控件的圖示為。雙擊或用鼠標拖動工具箱中的ImageButton按鈕,可將按鈕加入到窗體,重復該操作可加入多個按鈕。加入到窗體的按鈕可用鼠標拖放到窗體的任意位置并可以改變按鈕的大小。(1)ImageButton控件的語法格式<asp:ImageButtonid="ImageButton控件的標識符"ImageUrl="圖片的路徑"CommandName="與按鈕關聯(lián)的命令名"CommandArgument="命令的附加信息"CausesValidation="指示是否停用驗證(true|false)"OnClick="事件響應函數(shù)名"runat="server"/>(2)ImageButton控件的常用屬性ImageButton按鈕的大部分屬性與Button按鈕相同,獨自具有的主要屬性有:ImageUrl:設置圖像的Url??梢酝ㄟ^選擇其右邊的按鈕,在彈出的選擇圖像對話框中選擇圖像。ImageAlign:設置圖像的對齊方式。有10種選擇。如圖6-5所示。 圖6-5圖像的對齊方式(3)ImageButton控件的常用事件Click事件:當用戶用鼠標單擊ImageButton控件時,引發(fā)該事件。動手做:【例6-5】圖像按鈕的設計步驟如下:在窗體上放置一個按鈕ImageButton1。打開ImageButton1的屬性窗口,如圖6-6所示。選擇ImageUrl屬性,單擊右側的小圖標,彈出一個“選擇圖像”對話框,選擇一個位圖(擴展名為.bmp)文件后,單擊對話框中的瀏覽按鈕,從文件列表種選擇一個圖像文件。6.4.2文本控件Label控件Label控件是一種常用的Web服務器控件,又稱為標簽控件。標簽通常用于輸出文本信息,但輸出的信息不能編輯,所以常用來輸出標題、顯示處理結果和標識窗體上的對象。標簽一般不用于觸發(fā)事件。(1)Label控件的語法格式<asp:Labelid="Label控件的標識符"Text="控件上顯示的文本"runat="server"/>或者<asp:Labelid="Label控件的標識符"runat="server">
控件上顯示的文本</asp:Label>通??丶恼Z法格式都有兩種,一種是以“/>”結尾,一種是以“</asp:xxx>”結尾。二者表達形式雖然不同,但含義完全相同,讀者可以任選一種。(2)將Label控件加入Web窗體在工具箱中Label控件的圖示為。雙擊或用鼠標拖動工具箱中的Label控件,可將Label控件加入到窗體,重復該操作可加入多個Label控件。加入到窗體的Label控件可用鼠標拖放到窗體的任意位置并可以改變Label控件的大小。(3)Label控件的屬性在Label控件屬性窗口的屬性列表中,主要屬性及其含義如下:BorderStyle:設置邊框樣式。有10種選擇。Enabled:是否允許操作,可取值為True或False,F(xiàn)alse為禁止操作,此時標簽呈暗淡色,一般在代碼中設置。Font:設置標簽的文字。Textbox控件TextBox控件是一種常用的Web服務器控件,又稱為文本框控件。文本框可以輸入信息并可以顯示、編輯、修改文本內(nèi)容。文本框控件相當于單行文本框、多行文本框和密碼框,可以通過設置文本框的TextMode屬性來實現(xiàn)。在工具箱中文本框控件的圖示為。雙擊或用鼠標拖動工具箱中的文本框控件,可將文本框控件加入到窗體,重復該操作可加入多個文本框控件。加入到窗體的文本框控件可用鼠標拖放到窗體的任意位置并可以改變文本框控件的大小。(1)TextBox控件的語法格式<asp:TextBoxid="TextBox控件的文本標識符"AutoPostBack="是否回發(fā)事件(True|False)"Columns="文本框的顯示寬度"MaxLength="文本框可接受的最多字符數(shù)"Rows="文本框的行數(shù)"Text="文本框內(nèi)的文本"TextMode="文本框的行為模式(SingleLine|MultiLine|Password)"Wrap="文本是否自動換行(True|False)"OnTextChanged="事件響應函數(shù)的名字"runat="server"/>(2)TextBox控件的屬性文本框的屬性列表中有許多與窗體和其他控件相同的屬性。文本框的編程名稱(ID)為TextBox1,TextBox2,……等。文本框的其他主要屬性及其含義如下:MaxLength:設置文本框允許輸入字符的最大長度,該屬性值為0時,不限制輸入的字符數(shù),但受VB系統(tǒng)規(guī)定的2048個字符的限制。Text:文本內(nèi)容,當程序執(zhí)行時,用戶在文本框輸入的內(nèi)容會自動保存在該屬性中。Font屬性:設置文本字體。Wrap屬性:文本是否換行,為True時允許換行。BackColor:設置控件的背景色。BorderStyle:設置文本框控件的邊框類型。ReadOnly:指示能否更改文本框的內(nèi)容。為True,則可以更改。為False,則不可以更改,這時相當于Label控件。Columns:文本框的顯示寬度(以字符為單位)。Rows:多行文本框中顯示的行數(shù)。默認為0,表示顯示單行文本框。TextMode:確定文本框控件是單行文本框,多行文本框,還是密碼框。取值SingleLine,則是單行文本框;取值MultiLine,則是多行文本框;取值Password,則是密碼框。(3)TextBox控件常用事件TextBox的常用事件有:TextChange:Text
屬性值更改時發(fā)生。
動手做:【例6-6】成績統(tǒng)計【界面設計】圖6-7是一個乘法運算的Web窗體頁。在窗體上放置了三個文本框、兩個按鈕和六個標簽控件文本框用來輸入和顯示數(shù)的信息。將圖中文本框的初始信息清空的代碼如下:TextBox1.Text=""TextBox3.Text=""TextBox4.Text=""五個標簽分別用于標識文本框作用:Label1.Text="成績統(tǒng)計"Label2.Text="數(shù)學"Label3.Text="英語"Label4.Text="計算機"Label5.Text="總分"
第六個標簽用于顯示計算出來的總分:Label6.Text=""兩個按鈕標題分別設為“計算成績”、“重新輸入”。設置如下:butoon1.Text="計算成績"butoon2.Text="重新輸入"整個Web窗體代碼如下:<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="_6_6.WebForm1"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML> <HEAD> <title>WebForm1</title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.1"> <metaname="CODE_LANGUAGE"content="VisualBasic.NET7.1"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> </HEAD> <bodyMS_POSITIONING="GridLayout"> <formid="Form1"method="post"runat="server"> <FONTface="宋體"> <asp:Labelid="Label1"style="Z-INDEX:100;LEFT:48px;POSITION:absolute;TOP:24px"runat="server"Width="128px"Height="24px">成績統(tǒng)計</asp:Label> <asp:Labelid="Label6"style="Z-INDEX:112;LEFT:88px;POSITION:absolute;TOP:184px"runat="server"Width="96px"Height="24px"BorderStyle="Groove"BackColor="White"></asp:Label> <asp:Buttonid="Button2"style="Z-INDEX:111;LEFT:112px;POSITION:absolute;TOP:224px"runat="server"Width="64px"Text="重新輸入"></asp:Button> <asp:Labelid="Label5"style="Z-INDEX:108;LEFT:24px;POSITION:absolute;TOP:184px"runat="server"Width="48px"Height="24px">總分</asp:Label> <asp:TextBoxid="TextBox4"style="Z-INDEX:107;LEFT:88px;POSITION:absolute;TOP:140px"runat="server"Width="96px"></asp:TextBox> <asp:TextBoxid="TextBox3"style="Z-INDEX:106;LEFT:88px;POSITION:absolute;TOP:106px"runat="server"Width="96px"></asp:TextBox> <asp:Labelid="Label4"style="Z-INDEX:105;LEFT:24px;POSITION:absolute;TOP:146px"runat="server"Width="48px"Height="24px">計算機</asp:Label> <asp:TextBoxid="TextBox2"style="Z-INDEX:102;LEFT:88px;POSITION:absolute;TOP:72px"runat="server"Width="80px"></asp:TextBox> <asp:Labelid="Label2"style="Z-INDEX:101;LEFT:24px;POSITION:absolute;TOP:72px"runat="server"Width="48px"Height="24px">數(shù)學</asp:Label> <asp:TextBoxid="TextBox1"style="Z-INDEX:103;LEFT:88px;POSITION:absolute;TOP:72px"runat="server"Width="96px"></asp:TextBox> <asp:Labelid="Label3"style="Z-INDEX:104;LEFT:24px;POSITION:absolute;TOP:109px"runat="server"Width="48px"Height="24px">英語</asp:Label> <asp:Buttonid="Button1"style="Z-INDEX:110;LEFT:32px;POSITION:absolute;TOP:224px"runat="server"Width="64px"Text="計算成績"></asp:Button></FONT> </form> </body></HTML>【程序設計】PublicClassWebForm1InheritsSystem.Web.UI.Page#Region"Web窗體設計器生成的代碼"'該調(diào)用是Web窗體設計器所必需的。
<System.Diagnostics.DebuggerStepThrough()>PrivateSubInitializeComponent()EndSubProtectedWithEventsLabel1AsSystem.Web.UI.WebControls.LabelProtectedWithEventsLabel2AsSystem.Web.UI.WebControls.LabelProtectedWithEventsTextBox1AsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsLabel3AsSystem.Web.UI.WebControls.LabelProtectedWithEventsLabel4AsSystem.Web.UI.WebControls.LabelProtectedWithEventsTextBox3AsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsTextBox4AsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsLabel5AsSystem.Web.UI.WebControls.LabelProtectedWithEventsButton1AsSystem.Web.UI.WebControls.ButtonProtectedWithEventsButton2AsSystem.Web.UI.WebControls.ButtonProtectedWithEventsLabel6AsSystem.Web.UI.WebControls.LabelPrivatedesignerPlaceholderDeclarationAsSystem.ObjectPrivateSubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.InitInitializeComponent()EndSub#EndRegionPrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadEndSubPrivateSubButton1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimss,ee,rrAsDoubless=Val(TextBox1.Text)ee=Val(TextBox3.Text)rr=Val(TextBox4.Text)Label6.Text=Str(ss+ee+rr)EndSubPrivateSubButton2_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesButton2.ClickTextBox1.Text=""TextBox3.Text=""TextBox4.Text=""Label6.Text=""EndSubEndClass點評:使用Val函數(shù)將字符串轉換為浮點數(shù)。使用Str函數(shù)將浮點數(shù)轉換為字符串。單擊“計算成績”按鈕,會引發(fā)Button控件的Click事件,在Click事件響應程序Button1_Click中會計算“數(shù)學”、“英語”和“計算機”的成績和,并在Label6控件中顯示計算結果。運行結果如圖6-8所示。6.4.3選擇控件選擇控件通常用于從幾個選擇項中選擇一個或幾個選項。它通常包括RadioButton控件和CheckBox控件。1.RadioButton控件RadioButton控件是一種常用的Web服務器控件,又稱為單選按鈕控件。單選按鈕控件用來讓用戶在一組相關的選項中選擇一項,因此單選鈕控件總是成組出現(xiàn)。當這一組中的某個單選鈕控件被選中時,該組中的其它單選鈕控件將自動處于不選中狀態(tài)。如果想讓單選按鈕控件組成一組,必須讓所有單選按鈕的GroupName屬性完全一樣。RadioButton控件是一個小圓圈,若單擊單選按鈕,則圓圈中間出現(xiàn)一個小圓點,表示該項被選中。在工具箱中RadioButton控件的圖示為。單選按鈕的默認名稱為radioButton1,radioButton2,……等。雙擊或用鼠標拖動工具箱中的radioButton控件,可將單選按鈕加入到窗體,重復該操作可加入多個單選按鈕。加入到窗體的單選按鈕可用鼠標拖放到窗體的任意位置并可以改變單選按鈕的大小,并通過設置TextAlign
屬性來更改標題的方向。(1)RadioButton控件的語法格式<asp:RadioButtonid="RadioButton控件的標識符"AutoPostBack="是否回發(fā)事件(True|False)"Checked="是否被選中(True|False)"GroupName="控件組的名字"Text="控件的標題文字"TextAlign="文本對齊方式(Right|Left)"OnCheckedChanged="事件響應函數(shù)的名字"runat="server"/>(2)RadioButton控件的常用屬性在建立項目的按鈕操作中,常使用RadioButton控件的屬性設置按鈕的外觀特征。RadioButton控件的常用屬性如下:Text屬性:設置RadioButton控件的標題文字。TextAlign屬性:設置文本標題相對于單選鈕控件的對齊方式。有2種選擇,即Left和right,選擇right時文本標題位于單選鈕控件的右側。BackColor屬性:設置控件的背景色。ForeColor屬性:設置控件中文字的顏色。Font屬性:設置控件中文字的字體。Visible屬性:設置按鈕控件是否可見。Checked屬性:確定是否被選中。如果被選中則為true。GroupName屬性:設置按鈕控件所屬的組。這是按鈕分組的關鍵。先向頁面添加RadioButton控件,然后將所有RadioButton控件手動分配到一個組中。這種情況下,該組可為任意名稱;具有相同組名的所有單選按鈕視為一個組的組成部分。(3)RadioButton控件的常用事件CheckedChanged
事件。在默認情況下,CheckedChanged
事件并不立即導致向服務器發(fā)送Web窗體頁,而是在下一次發(fā)送窗體時(比如單擊ButtonWeb服務器控件時),在服務器代碼中引發(fā)該事件。如果要使CheckedChanged
事件導致立即發(fā)送,必須將RadioButton
控件的AutoPostBack
屬性設置為true。例如,在窗體頁上添加一個TextBox控件和一個RadioButton控件,單擊RadioButton控件則在文本框顯示文字。RadioButton控件的CheckedChanged
事件響應程序為:PrivateSubRadioButton1_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesRadioButton1.CheckedChangedTextBox1.Text=RadioButton1.TextEndSub運行結果如圖6-9所示。2.RadioButtonList控件RadioButtonList控件是單一控件,可作為單選按鈕列表項集合的父控件。每個單選按鈕列表項都是一個單獨的對象,具有自己的屬性。實際上,它的作用與多個RadioButton控件組成一組相同,都是用來讓用戶在一組相關的選項中選擇一項,當這一組中的某個單選鈕控件被選中時,該組中的其它單選鈕控件將自動處于不選中狀態(tài)。在工具箱中RadioButtonList控件的圖示為。RadioButtonList的默認名稱為RadioButtonList1,RadioButtonList2,……等。 雙擊或用鼠標拖動工具箱中的RadioButtonList控件,可將按鈕加入到窗體,重復該操作可加入多個按鈕。加入到窗體的按鈕可用鼠標拖放到窗體的任意位置并可以改變按鈕的大小,并通過設置TextAlign
屬性來更改標題的方向。(1)RadioButtonList控件的語法格式
<asp:RadioButtonListid="RadioButtonList控件標識符"AutoPostBack="是否回發(fā)事件(True|False)"CellPadding="列表項的填充值"DataSource="<%數(shù)據(jù)綁定表達式%>"DataTextField="綁定字段"DataValueField="綁定字段"RepeatColumns="列表項的列數(shù)"RepeatDirection="列表項的方向(Vertical|Horizontal)"RepeatLayout="列表項的呈現(xiàn)方式(Flow|Table)"TextAlign="文本對齊方式(Right|Left)"OnSelectedIndexChanged="事件響應函數(shù)的名字"runat="server"><asp:ListItemText="列表項的文本"Value="列表項的關聯(lián)值"Selected="是否被選中(True|False)"/></asp:RadioButtonList>
(2)RadioButtonList控件的常用屬性
RadioButtonList的許多屬性與RadioButton相同,其特有的屬性有:Items:設置列表中項的集合。選擇該屬性右側的,則彈出一個如圖6-10所示的ListItem集合編輯器窗口,在此窗口內(nèi)選擇“添加(A)”按鈕,可添加列表項。列表項的Selected屬性表示該列表項的初始選中狀態(tài);Text屬性表示該列表項的選項文本內(nèi)容;Value屬性表示與某個列表項關聯(lián)的值。RepeatColumns:設置列表項的列數(shù),例如當屬性值設為3時,則為三列。RepeatDirection:設置列表項的方向??伤脚帕谢虼怪迸帕小epeatLayout:設置組內(nèi)列表項(單選按鈕)的布局。取值為Table,則在表中顯示列表項;取值為Flow,不以表結構的形式顯示列表項。(3)RadioButtonList控件的常用事件RadioButtonList控件在用戶更改列表中選定的單選按鈕時會引發(fā)SelectedIndexChanged
事件。默認情況下,這一事件并不導致向服務器發(fā)送窗體,但可以通過將列表項的RadioButton的AutoPostBack
屬性設置為true來指定這一選項。3.Checkbox控件CheckBox控件又稱為復選框,它與單選按鈕一樣,也給用戶提供一組選項供用戶選擇。但它與單選按鈕有所不同,每個復選框都是一個單獨的選項,用戶既可以選擇它,也可以不選擇它,不存在互斥的問題,可以同時選擇多項。若單擊復選框,則復選框中間出現(xiàn)一個對號,表示該項被選中。再次單擊被選中的復選框,則取消對該復選框的選擇。在工具箱中CheckBox
控件的圖示為。復選框的默認名稱為checkBox1,checkBox2,……等。雙擊或用鼠標拖動工具箱中的CheckBox控件,可將復選框加入到窗體,重復該操作可加入多個復選框。加入到窗體的復選框可用鼠標拖放到窗體的任意位置并可以改變復選框的大小,并通過設置TextAlign
屬性來更改標題的方向。(1)CheckBox控件的語法格式<asp:CheckBoxid="CheckBox控件標識符"AutoPostBack="是否回發(fā)事件(True|False)"Text="控件的標題文字"TextAlign="文本對齊方式(Right|Left)"Checked="是否被選中(True|False)"OnCheckedChanged="事件響應函數(shù)的名字"runat="server"/>(2)CheckBox控件的常用屬性Text屬性:設置CheckBox控件的標題文字。TextAlign屬性:設置文本標題相對于復選框的對齊方式。有2種選擇,即Left和right,選擇right時文本標題位于復選框的右側。BackColor屬性:設置控件的背景色。ForeColor屬性:設置控件的所包含文字或圖形的前景色。Font屬性:設置控件中文字的字體。Visible屬性:設置復選框控件是否可見。Checked屬性:復選框按鈕是否被選中。如果復選框被選中,則其Checked屬性為true。(3)CheckBox控件的常用事件CheckedChanged事件在用戶選擇CheckBox控件時引發(fā)。在默認情況下,CheckedChanged
事件并不立即導致向服務器發(fā)送Web窗體頁,而是在下一次發(fā)送窗體時在服務器代碼中引發(fā)該事件。如果要使CheckedChanged
事件導致立即發(fā)送,必須將CheckBox控件的AutoPostBack
屬性設置為true。動手做:[例6-7]選擇學習媒介【界面設計】復選框常用于建立具有多選功能的工程界面。圖6-11是一個使用復選框選擇學習媒介的界面。在Web窗體頁上放置一個文本框控件(TextBox1)、3個RadioButton控件(RadioButton1、RadioButton2和RadioButton3)、3個CheckBox控件(CheckBox1、CheckBox2和CheckBox3)和2個按鈕控件(Button1和Button2)。整個Web窗體頁的代碼如下:<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="WebApplication1.WebForm1"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD> <title>WebForm1</title> <metaname="GENERATOR"content="MicrosoftVisualStudio.NET7.1"> <metaname="CODE_LANGUAGE"content="VisualBasic.NET7.1"> <metaname="vs_defaultClientScript"content="JavaScript"> <metaname="vs_targetSchema"content="/intellisense/ie5"> </HEAD><bodyMS_POSITIONING="GridLayou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)學整形美容服務協(xié)議
- 2025年員工福利和解合同
- 2025年在線教育運營合同
- 2025年公司融資投資人增資協(xié)議
- 2025年代理合作簽約協(xié)議
- 二零二五年度嬰幼兒奶粉產(chǎn)品追溯系統(tǒng)建設合作協(xié)議3篇
- 2025年項目建議書編制委托人工智能+大數(shù)據(jù)合同模板2篇
- 2025年度健康養(yǎng)生產(chǎn)品居間營銷合同模板4篇
- 跟著2025年新番走:《動漫欣賞》課件帶你領略動漫魅力2篇
- 2025年度智能牧場羊代放牧與物聯(lián)網(wǎng)服務合同
- 反騷擾政策程序
- 運動技能學習與控制課件第十一章運動技能的練習
- 射頻在疼痛治療中的應用
- 四年級數(shù)學豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項痹病辨證施護
- 職業(yè)安全健康工作總結(2篇)
- 懷化市數(shù)字經(jīng)濟產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設備安裝
- 教師高中化學大單元教學培訓心得體會
- 彈簧分離問題經(jīng)典題目
評論
0/150
提交評論