Web窗體及服務(wù)器控件_第1頁(yè)
Web窗體及服務(wù)器控件_第2頁(yè)
Web窗體及服務(wù)器控件_第3頁(yè)
Web窗體及服務(wù)器控件_第4頁(yè)
Web窗體及服務(wù)器控件_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

6.1.1Web窗體簡(jiǎn)介 如果您以前使用VB編寫過(guò)Windows窗體程序,那么您對(duì)Web窗體就不會(huì)感到陌生。其實(shí)Web窗體與Windows窗體類似,都用于創(chuàng)建用戶界面,只不過(guò)一個(gè)用于Web,在瀏覽器中展示其界面,一個(gè)用于Windows。 在ASP.NET中,對(duì)Web窗體編程分成了兩個(gè)不同的部分――可視元素和編程邏輯??梢曉鼐褪荳eb窗體頁(yè),它是靜態(tài)文本、HTML和ASP.NET服務(wù)器控件的容器。它存儲(chǔ)在以“.aspx”為擴(kuò)展名的文件中。我們可以使用VisualStudio.NETWeb窗體設(shè)計(jì)器和ASP.NET服務(wù)器控件來(lái)設(shè)計(jì)Web窗體頁(yè)。 編程邏輯就是一些與Web窗體進(jìn)行交互的代碼,其中包括Web窗體和它所包含控件的事件處理程序,它可以與可視元素位于同一個(gè)文件中,也可以與可視元素位于不同的文件中。如果位于同一個(gè)文件中,該文件的擴(kuò)展名仍然為“.aspx”;如果位于不同的文件中,則該文件稱作“代碼隱藏”文件,“代碼隱藏文件”的擴(kuò)展名與您使用的編程語(yǔ)言有關(guān)。如果您使用VisualBasic.NET編寫代碼,則“代碼隱藏文件”的擴(kuò)展名為“.aspx.vb”。如果您使用VisualC#.NET編寫代碼,則“代碼隱藏文件”的擴(kuò)展名為“.aspx.cs”。6.1Web窗體6.1.2Web窗體處理模型 如果可視元素和編程邏輯分別位于兩個(gè)獨(dú)立的文件中,那么他們是如何共同工作的?其原理非常簡(jiǎn)單,即當(dāng)應(yīng)用程序運(yùn)行時(shí),它們會(huì)組合在一起。項(xiàng)目中的所有代碼隱藏類文件都被編譯成一個(gè)動(dòng)態(tài)鏈接庫(kù)(DLL)文件,并且Web頁(yè)會(huì)動(dòng)態(tài)產(chǎn)生一個(gè)派生自Page類(Page類存在于System.Web.UI名稱空間中)的新類。而Web窗體的.aspx

頁(yè)文件,只有當(dāng)用戶第一次瀏覽該頁(yè)時(shí),才由ASP.NET產(chǎn)生一個(gè)代表該頁(yè)的.NET類文件,然后再編譯成另一個(gè)動(dòng)態(tài)鏈接庫(kù)(DLL)文件。在生成.NET類文件時(shí)二者發(fā)生關(guān)聯(lián),即該.NET類是從第一個(gè)DLL文件中的代碼后置類繼承而來(lái)。這樣當(dāng)用戶請(qǐng)求網(wǎng)頁(yè)時(shí),服務(wù)器上的DLL文件就會(huì)產(chǎn)生網(wǎng)頁(yè)的HTML輸出,就像一個(gè)本地運(yùn)行的程序一樣與用戶進(jìn)行交互。如果可視元素和編程邏輯位于同一個(gè)文件中,其原理更加簡(jiǎn)單。當(dāng)用戶第一次請(qǐng)求網(wǎng)頁(yè)時(shí),由ASP.NET產(chǎn)生一個(gè)代表該頁(yè)的.NET類文件,該類直接繼承于Page類。然后再編譯成一個(gè)動(dòng)態(tài)鏈接庫(kù)(DLL)文件,由DLL產(chǎn)生網(wǎng)頁(yè)的HTML輸出。 總之,在該模型中,只要Web窗體頁(yè)受到請(qǐng)求,此DLL文件就會(huì)在服務(wù)器上運(yùn)行。在運(yùn)行時(shí),此DLL文件通過(guò)動(dòng)態(tài)創(chuàng)建輸出并將其發(fā)送回瀏覽器或客戶端設(shè)備來(lái)處理傳入請(qǐng)求和響應(yīng)。如果該頁(yè)包含Web服務(wù)器控件,則派生的頁(yè)類用作控件的容器??丶膶?shí)例在運(yùn)行時(shí)創(chuàng)建,并且同樣地為瀏覽器呈現(xiàn)輸出。實(shí)際上,整個(gè)Web窗體頁(yè)是一個(gè)可執(zhí)行程序,該程序生成將被發(fā)送回瀏覽器或客戶端設(shè)備的輸出。 另外,您可以在.aspx文件中通過(guò)Page指令的Codebehind、Inherits和Src

屬性指定.aspx

文件與其代碼隱藏文件的關(guān)系。如:

<%@PageLanguage="vb"AutoEventWireup="false"Codebehind="WebForm1.aspx.vb"Inherits="TestCommand.WebForm1"%>

其中,Codebehind僅由VisualStudio.NET的Web窗體設(shè)計(jì)器使用,它引用包含頁(yè)類的文件的名稱。如上例中的WebForm1.aspx.vb文件。如果不是使用VisualStudio.NET生成.aspx文件,則使用src屬性指名包含頁(yè)類的文件名稱。Inherits屬性標(biāo)識(shí)Web窗體頁(yè)需要從哪個(gè)類派生,如上例中的TestCommand.WebForm1類。注意: 如果將包含Src

屬性Web窗體頁(yè)導(dǎo)入到VisualStudio.NET中,則設(shè)計(jì)器將引發(fā)錯(cuò)誤6.1.3Web窗體頁(yè)面狀態(tài) 在客戶端和服務(wù)器端之間進(jìn)行通信時(shí),使用HTTP協(xié)議。由于HTTP協(xié)議是一個(gè)無(wú)狀態(tài)協(xié)議,因此每當(dāng)在往返過(guò)程中處理一頁(yè)時(shí),該頁(yè)即被損壞和重新呈現(xiàn),并且有關(guān)Web窗體頁(yè)以及該頁(yè)上控件的狀態(tài)有關(guān)的所有信息均將丟失。這對(duì)我們編寫Web應(yīng)用程序造成極大困難。為了解決這個(gè)問(wèn)題,ASP.NET提供了視圖狀態(tài)這一機(jī)制。它利用Page類的ViewState保存頁(yè)面和頁(yè)面中各個(gè)控件的狀態(tài),如哪個(gè)單選按鈕被選中了、文本框中包含什么文字等。 使用視圖狀態(tài)的好處是:不占用服務(wù)器資源。視圖狀態(tài)在頁(yè)面隱藏域中保存。實(shí)現(xiàn)機(jī)理非常簡(jiǎn)單。自動(dòng)保持頁(yè)和控件的狀態(tài)。增強(qiáng)的安全功能。視圖狀態(tài)中的值是散列的、壓縮的并且是為Unicode實(shí)現(xiàn)而編碼的,這意味著比隱藏域具有更高的安全性狀態(tài)。注意: 為了使用視圖狀態(tài),Web窗體必須具有服務(wù)器表單元素,即“<formrunat="server">”。動(dòng)手做:[例6-1](6-1.aspx)視圖狀態(tài)<html><TITLE>[例6-1]視圖狀態(tài)</TITLE><body><formrunat="server">

請(qǐng)輸入您的姓名:<BR><asp:textboxid="lTitle"runat=server/><asp:buttonid="Submit"Text="確認(rèn)"runat=server/></form></body></html>點(diǎn)評(píng):

該段代碼包含一個(gè)文本框和一個(gè)按鈕。為了查看視圖狀態(tài)的實(shí)現(xiàn),可以查看服務(wù)器發(fā)給瀏覽器的HTML代碼。選擇IE瀏覽器的【查看】|【源文件】菜單項(xiàng),得到如下所示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=="/>

請(qǐng)輸入您的姓名:<BR><inputname="lTitle"type="text"id="lTitle"/><inputtype="submit"name="Submit"value="確認(rèn)"id="Submit"/></form></body></html>從HTML代碼中可以看到一個(gè)名字叫“__VIEWSTATE”的隱藏域,它就是視圖狀態(tài)。它的值是“dDwxNDg5OTk5MzM7Oz4qPkqoW5XWb44RIPPi/mtTOryJvw==”。由于采用了加密措施,所以我們無(wú)法知道其中的含義。但服務(wù)器通過(guò)解密后,可以恢復(fù)它的值,可以知道它的含義。

6.2ASP.NET事件處理ASP.NET把事件驅(qū)動(dòng)由Windows程序引入到Web程序中,使得程序設(shè)計(jì)模式發(fā)生了根本改變。只有當(dāng)事件發(fā)生時(shí),才會(huì)有相應(yīng)的處理,才會(huì)觸發(fā)相應(yīng)的代碼。沒(méi)有事件發(fā)生時(shí),任何代碼都不會(huì)被執(zhí)行。ASP.NET事件驅(qū)動(dòng)與Windows事件驅(qū)動(dòng)還有一些差別,Windows程序的事件引發(fā)和處理一般都位于同一個(gè)位置,而基于客戶端的Web應(yīng)用程序事件本身與處理該事件的位置是分離的。這樣APS.NET就要求在客戶端引發(fā)的事件,由客戶端來(lái)捕獲,然后通過(guò)HTTP將事件消息傳輸?shù)椒?wù)器,在服務(wù)器上調(diào)用相應(yīng)的事件處理程序來(lái)響應(yīng)此事件。ASP.NET事件一般分為兩類:在頁(yè)面處理過(guò)程的某一階段自動(dòng)引發(fā)的頁(yè)面事件;在客戶端被觸發(fā)的服務(wù)器控件事件。下面就分別講述。6.2.1頁(yè)面事件

頁(yè)面事件在頁(yè)面每次加載時(shí)都會(huì)發(fā)生,是由ASP.NET頁(yè)框架引發(fā)的,不需用戶提供事件綁定。ASP.NET頁(yè)框架是分階段對(duì)Web窗體頁(yè)進(jìn)行處理的。在Web窗體頁(yè)處理的每一階段,都可能引發(fā)事件,以及運(yùn)行與該事件相對(duì)應(yīng)的事件處理程序。因此通過(guò)向這些事件處理程序添加代碼可以更好地控制Web窗體頁(yè)。下面就介紹一下頁(yè)面事件,以及與之相應(yīng)的Web窗體頁(yè)處理階段。1.Page_Init事件該事件發(fā)生在ASP.NET頁(yè)框架初始化階段,即在該頁(yè)第一次被載入時(shí)發(fā)生的。通常使用該事件為Web窗體頁(yè)中的各個(gè)控件進(jìn)行初始化工作。其語(yǔ)法形式為:SubPage_Init(senderAsObject,eAsEventArgs)

事件處理代碼EndSub其中,sender事件參數(shù)為事件發(fā)出者,e事件參數(shù)為事件所包含的數(shù)據(jù)。所有的Web頁(yè)事件處理程序都有這兩個(gè)參數(shù),第一個(gè)參數(shù)的類型為Object,第二個(gè)參數(shù)為EventArgs類型或其派生類。2.Page_Load

事件該事件在Web頁(yè)被載入瀏覽器時(shí)發(fā)生。通常也使用該事件為Web窗體頁(yè)中的各個(gè)控件進(jìn)行初始化工作。但它與Page_Init事件不同,Page_Init事件是在頁(yè)面第一次載入時(shí)發(fā)生的,當(dāng)頁(yè)面重入時(shí)就不會(huì)發(fā)生了。而Page_Load事件在頁(yè)面每次載入時(shí)都會(huì)發(fā)生。另外,他們的執(zhí)行順序也不同,Page_Init事件先執(zhí)行,Page_Load事件后執(zhí)行。其語(yǔ)法形式為:SubPage_Load(senderAsObject,eAsEventArgs)

事件處理代碼EndSub有時(shí),需要在Page_Load事件中區(qū)分頁(yè)面是第一次被載入,還是重入。ASP.NET為Page類提供了一個(gè)IsPostBack屬性,當(dāng)該屬性為False時(shí),表示頁(yè)面是第一次被載入,否則是重入。如:SubPage_Load(senderAsObject,eAsEventArgs) IfnotPage.IsPostBackThen ‘第一次被載入

Else ‘重入

EndIfEndSubPage_Unload

事件該事件在Web頁(yè)被清除時(shí)發(fā)生。通常在該事件中做一些善后工作,如關(guān)閉打開的文件、斷開與數(shù)據(jù)庫(kù)的連接、清理對(duì)象等。其語(yǔ)法形式為:SubPage_Unload(senderAsObject,eAsEventArgs)

事件處理代碼EndSub

動(dòng)手做:[例6-2](6-2.aspx)頁(yè)面事件<HTML><TITLE>[例6-2]頁(yè)面事件</TITLE><SCRIPTLanguage="VB"RUNAT="SERVER">SubPage_Load(senderAsObject,eAsEventArgs) web.Text="網(wǎng)絡(luò)" news.Text="報(bào)紙" tv.Text="電視" web.checked=true lTitle.Text="請(qǐng)選擇您獲取信息的途徑:"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="確認(rèn)"onclick="Submit_Onclick"runat=server/><p><asp:labelid="lDisplay"forecolor="Blue"font-size="20pt"runat=server/></FORM></BODY></HTML>點(diǎn)評(píng):該段代碼為Web頁(yè)面添加了Page_Load事件。在該事件中,為頁(yè)面的靜態(tài)文本標(biāo)簽lTitle設(shè)置了初始值“請(qǐng)選擇您獲取信息的途徑:”;為單選按鈕web、news和tv添加文本值“網(wǎng)絡(luò)”、“報(bào)紙”和“電視”,并選中web單選按鈕。運(yùn)行結(jié)果如圖6-1所示。

服務(wù)器控件事件是在客戶端被客戶所引發(fā)的,在服務(wù)器端被處理。它包括回發(fā)事件和非回發(fā)事件?;匕l(fā)事件是指事件發(fā)生后,客戶端會(huì)立即把事件提交到服務(wù)器。非回發(fā)事件是指事件被引發(fā)后不會(huì)立即被發(fā)送到服務(wù)器端,而是由控件在客戶端緩存這些事件,直到下一次頁(yè)面提交時(shí)才發(fā)送,這時(shí)會(huì)引發(fā)和處理所有掛起的事件。要想使控件的事件能夠被立即響應(yīng),應(yīng)該使控件具有回發(fā)事件能力,即設(shè)置控件的AutoPostBack

屬性為True。例如,默認(rèn)情況下,CheckBox復(fù)選框控件的CheckedChange事件不會(huì)導(dǎo)致該頁(yè)被提交。但是,通過(guò)將該控件的AutoPostBack屬性設(shè)置為true,則當(dāng)用戶單擊復(fù)選框時(shí),CheckedChange事件會(huì)立即發(fā)送到服務(wù)器并被處理。由于服務(wù)器控件事件引發(fā)和處理位置不同,需要在服務(wù)器和客戶端之間傳遞,會(huì)占用大量帶寬,而且影響效率。因此常見服務(wù)器控件的事件都經(jīng)過(guò)優(yōu)化,一些不必要的事件都被去除掉,減少了服務(wù)器控件的事件數(shù)量。而且不同的控件可能具有不同的事件,因此服務(wù)器控件的事件會(huì)在6.3節(jié)講解具體控件時(shí),再詳細(xì)講解。為服務(wù)器控件添加事件最簡(jiǎn)單的方法就是在服務(wù)器控件的標(biāo)記內(nèi)把事件綁定到事件處理程序上,然后在該Web頁(yè)上添加一個(gè)事件處理程序。或者如第一章1.3.2節(jié)所示的那樣,在VisualStudio.NET中為服務(wù)器控件添加事件。6.2.2服務(wù)器控件事件動(dòng)手做:[例6-3](6-3.aspx)服務(wù)器控件事件<HTML><TITLE>[例6-3]服務(wù)器控件事件</TITLE><SCRIPTLanguage="VB"RUNAT="SERVER">SubPage_Load(senderAsObject,eAsEventArgs) IfnotPage.IsPostBackThen web.checked=true EndIfEndSubSubSubmit_Onclick(senderAsObject,eAsEventArgs) DimmessageAsString="您獲取信息的途徑是:" ifweb.checkedthenmessage=message&"網(wǎng)絡(luò)" ifnews.checkedthenmessage=message&"報(bào)紙" iftv.checkedthenmessage=message&"電視" lDisplay.Text=messageEndSub </Script><BODY><FORMRUNAT="SERVER">

請(qǐng)選擇您獲取信息的途徑:<BR><Inputtype="radio"id="web"name="path"runat=server>網(wǎng)絡(luò)<BR><Inputtype="radio"id="news"name="path"runat=server>報(bào)紙<BR><Inputtype="radio"id="tv"name="path"runat=server>電視<BR><Inputtype="button"id="Submit"Value="確認(rèn)"onserverclick="Submit_Onclick" runat=server/><p><asp:labelid="lDisplay"forecolor="Blue"font-size="20pt"runat=server/></FORM></BODY></HTML>點(diǎn)評(píng):該段代碼為Web頁(yè)面添加了一個(gè)服務(wù)器按鈕控件的單擊事件onserverclick。當(dāng)用戶單擊“確定”按鈕后,就會(huì)引發(fā)該事件。在該事件中,根據(jù)選中的單選按鈕確定“獲取信息的途徑”。另外,在頁(yè)面第一次載入時(shí),通過(guò)Page_Load事件設(shè)定單選按鈕的默認(rèn)選中狀態(tài)。運(yùn)行結(jié)果如圖6-2所示。

ASP.NET之所以能夠快速建立強(qiáng)大的Web應(yīng)用程序,就在于它提供許多內(nèi)置服務(wù)器控件。通過(guò)利用這些控件的屬性、方法和事件編程,就可以完成以前需要許多行HTML代碼才能完成的工作。而且ASP.NET還允許我們使用第三方控件和自定義控件,以增強(qiáng)ASP.NET應(yīng)用程序的功能和靈活性。ASP.NET內(nèi)置服務(wù)器控件包括HTML服務(wù)器控件、Web服務(wù)器控件和驗(yàn)證控件。本節(jié)就詳細(xì)介紹ASP.NETHTML服務(wù)器控件。

6.3HTML服務(wù)器控件6.3.1HTML服務(wù)器控件基本知識(shí)HTML控件是與HTML標(biāo)記相對(duì)應(yīng)的服務(wù)器端控件,它是在HTML標(biāo)記基礎(chǔ)上加上RUNAT="SERVER"屬性后形成的,因此二者的屬性基本相同。那么我們?yōu)槭裁催€要使用HTML控件呢?因?yàn)槲覀儾荒芾贸绦蛑苯涌刂茦?biāo)準(zhǔn)HTML標(biāo)記的屬性、方法和事件。以前要想控制這些HTML標(biāo)記,必須另外學(xué)習(xí)其它如JavaScript等程序語(yǔ)言才行?,F(xiàn)在ASP.NET通過(guò)將HTML標(biāo)記轉(zhuǎn)換為HTML服務(wù)器控件,就可以使我們?cè)诜?wù)器端通過(guò)編程來(lái)控制這些HTML服務(wù)器控件,從而可以在運(yùn)行時(shí)控制頁(yè)面的外觀和功能。通過(guò)將HTML標(biāo)記對(duì)象化,可以使我們使用VB.NET和C#語(yǔ)言來(lái)編寫ASP.NET動(dòng)態(tài)網(wǎng)頁(yè)程序。而且與早期的ASP相比,可以減少許多代碼,使程序編寫和維護(hù)變得更加容易。

HTML控件與HTML標(biāo)記不同之處,在于HTML控件多了ID以及Runat屬性。ID屬性用于標(biāo)識(shí)該控件,以便在服務(wù)器端使用該控件。如果不需要在服務(wù)器端控制該控件,可以不設(shè)定ID屬性。而Runat

屬性表示這個(gè)對(duì)象是在服務(wù)器端執(zhí)行,所有的HTML控件都必須加上這個(gè)屬性。例如,生成一個(gè)HTML服務(wù)器文本框控件:

<inputtype="text"id="user"value="用戶名"runat="Server">注意:必須把HTML服務(wù)器控件包含在含有runat="server"的<form>標(biāo)記中。要求所有HTML元素要正確結(jié)束,結(jié)束的方式有兩種,結(jié)束標(biāo)記和后綴“/”。為了在代碼中引用控件還必須設(shè)置控件的id屬性6.3.2使用HTML服務(wù)器控件HTML服務(wù)器控件與HTML標(biāo)記的對(duì)應(yīng)關(guān)系HTML服務(wù)器控件的共有屬性HTML服務(wù)器控件使用方法HTML服務(wù)器控件實(shí)例HTML服務(wù)器控件與HTML標(biāo)記的對(duì)應(yīng)關(guān)系見表6-1

3.HTML服務(wù)器控件使用方法使用HTML服務(wù)器控件有兩種方式:一種是利用VisualStudio.Net集成開發(fā)環(huán)境,可視化地使用HTML服務(wù)器控件;一種是直接書寫代碼,用代碼生成和使用控件。在第一章中我們已經(jīng)介紹了利用VisualStudio.Net集成開發(fā)環(huán)境,可視化地使用HTML控件,這里就不再贅述了。下面主要介紹用代碼生成和使用HTML控件。使用ASP.NETHTML服務(wù)器控件與使用標(biāo)準(zhǔn)的HTML標(biāo)記幾乎相同,只需要添加runat屬性和id屬性。例如:<inputtype="text"id="pwd"value="密碼"runat="Server">除了runat和id屬性外,控件還包含其它屬性,這些屬性可以在標(biāo)記中直接添加,也可以通過(guò)編程添加。例如,向文本框添加MaxLength屬性:<inputtype="text"id="pwd"value="密碼"MaxLength=10runat="Server"/>向文本框添加Mode屬性、Rows屬性:<asp:TextBoxid="note"Text="留言"Mode="Multiline"Rows="6"runat="Server"/>一般情況下,控件都要引發(fā)事件,以便與用戶進(jìn)行交互,實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)功能。這時(shí)就需要為控件添加事件。添加事件的方法如6.2節(jié)所示。4.HTML服務(wù)器控件實(shí)例由于HTML控件基本上與HTML標(biāo)記相同,其使用也基本相同,因此僅舉一個(gè)實(shí)例演示HTML服務(wù)器控件的使用。 動(dòng)手做:[例6-4](6-4.aspx)編寫“求租房屋信息”Web頁(yè)面<html><head><title>[例6-4]編寫"求租房屋信息"Web頁(yè)面</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>地點(diǎn):</td><td><selectid="Select1"Multiple="False"runat="server"> <optionvalue="沒(méi)有要求">沒(méi)有要求</option> <optionvalue="河?xùn)|區(qū)"Selected="True">河?xùn)|區(qū)</option> <optionvalue="河西區(qū)">河西區(qū)</option> <optionvalue="河北區(qū)">河北區(qū)</option> </select></td><tdalign=right>房型:</td><td><selectid="Select2"Multiple="False"runat="server"> <optionvalue="沒(méi)有要求">沒(méi)有要求</option> <optionvalue="獨(dú)單"Selected="True">獨(dú)單</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>點(diǎn)評(píng):

該例子使用表格Select1來(lái)布局Web頁(yè)面,使Web頁(yè)面更美觀、各控件布局更合理。使用兩個(gè)HtmlInputText控件接收用戶輸入的姓名和年齡。使用兩個(gè)HtmlInputRadioButton控件接受用戶對(duì)性別的選擇。使用一個(gè)HtmlInputCheckBox控件接受用戶是否合租的選擇。使用兩個(gè)HtmlSelect控件接受用戶對(duì)坐落地點(diǎn)和房型的選擇。使用HtmlTextArea控件接受用戶錄入備注信息。表格Select2在用戶單擊“提交”按鈕之前并不顯示,可以通過(guò)設(shè)置HtmlTable控件的Visible屬性為false來(lái)實(shí)現(xiàn)。當(dāng)用戶單擊“提交”按鈕后,服務(wù)器端響應(yīng)按鈕單擊事件,并在事件響應(yīng)程序SubmitBtn_Click中獲取Web頁(yè)面上各控件的值,然后顯示在表格Select2中。運(yùn)行結(jié)果如圖6-3所示W(wǎng)eb服務(wù)器控件是ASP.NET提供的一類新型控件,它并不一一映射到HTML服務(wù)器控件,而是定義為抽象控件,提供功能豐富的對(duì)象模型。它能夠檢測(cè)瀏覽器的功能,并根據(jù)不同瀏覽器創(chuàng)建適當(dāng)?shù)妮敵觥?duì)于某些控件,還可以使用模板來(lái)自定義控件的外觀,可以指定控件的事件是立即發(fā)送到服務(wù)器,還是先緩存然后在提交Web窗體時(shí)引發(fā)。因此,Web服務(wù)器控件類型更豐富,內(nèi)置功能更多,可編程操控性更好。下面就介紹一些常用Web服務(wù)器控件。6.4Web服務(wù)器控件6.4.1按鈕控件在Web服務(wù)器控件中,常用的按鈕控件有Button控件和ImageButton控件。1.Button控件Button控件是一種常用的Web服務(wù)器控件,又稱為按鈕控件。它常用于執(zhí)行一個(gè)命令或提交Web頁(yè)。在工具箱中Button控件的圖示為。雙擊或用鼠標(biāo)拖動(dòng)工具箱中的Button按鈕,可將按鈕加入到Web窗體,重復(fù)該操作可加入多個(gè)按鈕。加入到窗體的按鈕可用鼠標(biāo)拖放到窗體的任意位置并可以改變按鈕的大小。(1)Button控件的語(yǔ)法格式<asp:Buttonid="Button控件的標(biāo)識(shí)符"Text="按鈕上顯示的文本"CommandName="與按鈕關(guān)聯(lián)的命令名"CommandArgument="命令的附加信息"CausesValidation="指示是否停用驗(yàn)證(true|false)"OnClick="事件響應(yīng)函數(shù)名"runat="server"/>(2)Button控件的常用屬性通常使用Button控件的屬性設(shè)置按鈕的外觀特征,Button控件的常用屬性如下:ID:控件的標(biāo)識(shí)符。在程序中使用該值標(biāo)識(shí)控件。Text:設(shè)置按鈕上顯示的標(biāo)題文字。BackColor:設(shè)置按鈕控件的背景色。BoderStyle:設(shè)置按鈕控件的邊框的樣式,有10種選擇。如圖6-4所示。圖6-4按鈕控件的邊框樣式BoderColor:設(shè)置按鈕控件的邊框的顏色ForeColor:設(shè)置按鈕控件的所包含文字或圖形的前景色。Font:設(shè)置按鈕控件標(biāo)題文字的字體。Visible屬性:設(shè)置按鈕控件是否可見。(3)Button控件的常用事件按鈕的常用事件只有一種:Click事件:當(dāng)用戶用鼠標(biāo)單擊Button控件時(shí),引發(fā)該事件。注意:按鈕不支持DblClick事件。2.ImageButton控件

ImageButton控件是一種常用的Web服務(wù)器控件,它與Button控件幾乎一樣,只是外觀有所不同。在工具箱中ImageButton控件的圖示為。雙擊或用鼠標(biāo)拖動(dòng)工具箱中的ImageButton按鈕,可將按鈕加入到窗體,重復(fù)該操作可加入多個(gè)按鈕。加入到窗體的按鈕可用鼠標(biāo)拖放到窗體的任意位置并可以改變按鈕的大小。(1)ImageButton控件的語(yǔ)法格式<asp:ImageButtonid="ImageButton控件的標(biāo)識(shí)符"ImageUrl="圖片的路徑"CommandName="與按鈕關(guān)聯(lián)的命令名"CommandArgument="命令的附加信息"CausesValidation="指示是否停用驗(yàn)證(true|false)"OnClick="事件響應(yīng)函數(shù)名"runat="server"/>(2)ImageButton控件的常用屬性ImageButton按鈕的大部分屬性與Button按鈕相同,獨(dú)自具有的主要屬性有:ImageUrl:設(shè)置圖像的Url。可以通過(guò)選擇其右邊的按鈕,在彈出的選擇圖像對(duì)話框中選擇圖像。ImageAlign:設(shè)置圖像的對(duì)齊方式。有10種選擇。如圖6-5所示。 圖6-5圖像的對(duì)齊方式(3)ImageButton控件的常用事件Click事件:當(dāng)用戶用鼠標(biāo)單擊ImageButton控件時(shí),引發(fā)該事件。動(dòng)手做:【例6-5】圖像按鈕的設(shè)計(jì)步驟如下:在窗體上放置一個(gè)按鈕ImageButton1。打開ImageButton1的屬性窗口,如圖6-6所示。選擇ImageUrl屬性,單擊右側(cè)的小圖標(biāo),彈出一個(gè)“選擇圖像”對(duì)話框,選擇一個(gè)位圖(擴(kuò)展名為.bmp)文件后,單擊對(duì)話框中的瀏覽按鈕,從文件列表種選擇一個(gè)圖像文件。6.4.2文本控件Label控件Label控件是一種常用的Web服務(wù)器控件,又稱為標(biāo)簽控件。標(biāo)簽通常用于輸出文本信息,但輸出的信息不能編輯,所以常用來(lái)輸出標(biāo)題、顯示處理結(jié)果和標(biāo)識(shí)窗體上的對(duì)象。標(biāo)簽一般不用于觸發(fā)事件。(1)Label控件的語(yǔ)法格式<asp:Labelid="Label控件的標(biāo)識(shí)符"Text="控件上顯示的文本"runat="server"/>或者<asp:Labelid="Label控件的標(biāo)識(shí)符"runat="server">

控件上顯示的文本</asp:Label>通常控件的語(yǔ)法格式都有兩種,一種是以“/>”結(jié)尾,一種是以“</asp:xxx>”結(jié)尾。二者表達(dá)形式雖然不同,但含義完全相同,讀者可以任選一種。(2)將Label控件加入Web窗體在工具箱中Label控件的圖示為。雙擊或用鼠標(biāo)拖動(dòng)工具箱中的Label控件,可將Label控件加入到窗體,重復(fù)該操作可加入多個(gè)Label控件。加入到窗體的Label控件可用鼠標(biāo)拖放到窗體的任意位置并可以改變Label控件的大小。(3)Label控件的屬性在Label控件屬性窗口的屬性列表中,主要屬性及其含義如下:BorderStyle:設(shè)置邊框樣式。有10種選擇。Enabled:是否允許操作,可取值為True或False,F(xiàn)alse為禁止操作,此時(shí)標(biāo)簽呈暗淡色,一般在代碼中設(shè)置。Font:設(shè)置標(biāo)簽的文字。Textbox控件TextBox控件是一種常用的Web服務(wù)器控件,又稱為文本框控件。文本框可以輸入信息并可以顯示、編輯、修改文本內(nèi)容。文本框控件相當(dāng)于單行文本框、多行文本框和密碼框,可以通過(guò)設(shè)置文本框的TextMode屬性來(lái)實(shí)現(xiàn)。在工具箱中文本框控件的圖示為。雙擊或用鼠標(biāo)拖動(dòng)工具箱中的文本框控件,可將文本框控件加入到窗體,重復(fù)該操作可加入多個(gè)文本框控件。加入到窗體的文本框控件可用鼠標(biāo)拖放到窗體的任意位置并可以改變文本框控件的大小。(1)TextBox控件的語(yǔ)法格式<asp:TextBoxid="TextBox控件的文本標(biāo)識(shí)符"AutoPostBack="是否回發(fā)事件(True|False)"Columns="文本框的顯示寬度"MaxLength="文本框可接受的最多字符數(shù)"Rows="文本框的行數(shù)"Text="文本框內(nèi)的文本"TextMode="文本框的行為模式(SingleLine|MultiLine|Password)"Wrap="文本是否自動(dòng)換行(True|False)"OnTextChanged="事件響應(yīng)函數(shù)的名字"runat="server"/>(2)TextBox控件的屬性文本框的屬性列表中有許多與窗體和其他控件相同的屬性。文本框的編程名稱(ID)為TextBox1,TextBox2,……等。文本框的其他主要屬性及其含義如下:MaxLength:設(shè)置文本框允許輸入字符的最大長(zhǎng)度,該屬性值為0時(shí),不限制輸入的字符數(shù),但受VB系統(tǒng)規(guī)定的2048個(gè)字符的限制。Text:文本內(nèi)容,當(dāng)程序執(zhí)行時(shí),用戶在文本框輸入的內(nèi)容會(huì)自動(dòng)保存在該屬性中。Font屬性:設(shè)置文本字體。Wrap屬性:文本是否換行,為True時(shí)允許換行。BackColor:設(shè)置控件的背景色。BorderStyle:設(shè)置文本框控件的邊框類型。ReadOnly:指示能否更改文本框的內(nèi)容。為True,則可以更改。為False,則不可以更改,這時(shí)相當(dāng)于Label控件。Columns:文本框的顯示寬度(以字符為單位)。Rows:多行文本框中顯示的行數(shù)。默認(rèn)為0,表示顯示單行文本框。TextMode:確定文本框控件是單行文本框,多行文本框,還是密碼框。取值SingleLine,則是單行文本框;取值MultiLine,則是多行文本框;取值Password,則是密碼框。(3)TextBox控件常用事件TextBox的常用事件有:TextChange:Text

屬性值更改時(shí)發(fā)生。

動(dòng)手做:【例6-6】成績(jī)統(tǒng)計(jì)【界面設(shè)計(jì)】圖6-7是一個(gè)乘法運(yùn)算的Web窗體頁(yè)。在窗體上放置了三個(gè)文本框、兩個(gè)按鈕和六個(gè)標(biāo)簽控件文本框用來(lái)輸入和顯示數(shù)的信息。將圖中文本框的初始信息清空的代碼如下:TextBox1.Text=""TextBox3.Text=""TextBox4.Text=""五個(gè)標(biāo)簽分別用于標(biāo)識(shí)文本框作用:Label1.Text="成績(jī)統(tǒng)計(jì)"Label2.Text="數(shù)學(xué)"Label3.Text="英語(yǔ)"Label4.Text="計(jì)算機(jī)"Label5.Text="總分"

第六個(gè)標(biāo)簽用于顯示計(jì)算出來(lái)的總分:Label6.Text=""兩個(gè)按鈕標(biāo)題分別設(shè)為“計(jì)算成績(jī)”、“重新輸入”。設(shè)置如下:butoon1.Text="計(jì)算成績(jī)"butoon2.Text="重新輸入"整個(gè)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">成績(jī)統(tǒng)計(jì)</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">計(jì)算機(jī)</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ù)學(xué)</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">英語(yǔ)</asp:Label> <asp:Buttonid="Button1"style="Z-INDEX:110;LEFT:32px;POSITION:absolute;TOP:224px"runat="server"Width="64px"Text="計(jì)算成績(jī)"></asp:Button></FONT> </form> </body></HTML>【程序設(shè)計(jì)】PublicClassWebForm1InheritsSystem.Web.UI.Page#Region"Web窗體設(shè)計(jì)器生成的代碼"'該調(diào)用是Web窗體設(shè)計(jì)器所必需的。

<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點(diǎn)評(píng):使用Val函數(shù)將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)。使用Str函數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串。單擊“計(jì)算成績(jī)”按鈕,會(huì)引發(fā)Button控件的Click事件,在Click事件響應(yīng)程序Button1_Click中會(huì)計(jì)算“數(shù)學(xué)”、“英語(yǔ)”和“計(jì)算機(jī)”的成績(jī)和,并在Label6控件中顯示計(jì)算結(jié)果。運(yùn)行結(jié)果如圖6-8所示。6.4.3選擇控件選擇控件通常用于從幾個(gè)選擇項(xiàng)中選擇一個(gè)或幾個(gè)選項(xiàng)。它通常包括RadioButton控件和CheckBox控件。1.RadioButton控件RadioButton控件是一種常用的Web服務(wù)器控件,又稱為單選按鈕控件。單選按鈕控件用來(lái)讓用戶在一組相關(guān)的選項(xiàng)中選擇一項(xiàng),因此單選鈕控件總是成組出現(xiàn)。當(dāng)這一組中的某個(gè)單選鈕控件被選中時(shí),該組中的其它單選鈕控件將自動(dòng)處于不選中狀態(tài)。如果想讓單選按鈕控件組成一組,必須讓所有單選按鈕的GroupName屬性完全一樣。RadioButton控件是一個(gè)小圓圈,若單擊單選按鈕,則圓圈中間出現(xiàn)一個(gè)小圓點(diǎn),表示該項(xiàng)被選中。在工具箱中RadioButton控件的圖示為。單選按鈕的默認(rèn)名稱為radioButton1,radioButton2,……等。雙擊或用鼠標(biāo)拖動(dòng)工具箱中的radioButton控件,可將單選按鈕加入到窗體,重復(fù)該操作可加入多個(gè)單選按鈕。加入到窗體的單選按鈕可用鼠標(biāo)拖放到窗體的任意位置并可以改變單選按鈕的大小,并通過(guò)設(shè)置TextAlign

屬性來(lái)更改標(biāo)題的方向。(1)RadioButton控件的語(yǔ)法格式<asp:RadioButtonid="RadioButton控件的標(biāo)識(shí)符"AutoPostBack="是否回發(fā)事件(True|False)"Checked="是否被選中(True|False)"GroupName="控件組的名字"Text="控件的標(biāo)題文字"TextAlign="文本對(duì)齊方式(Right|Left)"OnCheckedChanged="事件響應(yīng)函數(shù)的名字"runat="server"/>(2)RadioButton控件的常用屬性在建立項(xiàng)目的按鈕操作中,常使用RadioButton控件的屬性設(shè)置按鈕的外觀特征。RadioButton控件的常用屬性如下:Text屬性:設(shè)置RadioButton控件的標(biāo)題文字。TextAlign屬性:設(shè)置文本標(biāo)題相對(duì)于單選鈕控件的對(duì)齊方式。有2種選擇,即Left和right,選擇right時(shí)文本標(biāo)題位于單選鈕控件的右側(cè)。BackColor屬性:設(shè)置控件的背景色。ForeColor屬性:設(shè)置控件中文字的顏色。Font屬性:設(shè)置控件中文字的字體。Visible屬性:設(shè)置按鈕控件是否可見。Checked屬性:確定是否被選中。如果被選中則為true。GroupName屬性:設(shè)置按鈕控件所屬的組。這是按鈕分組的關(guān)鍵。先向頁(yè)面添加RadioButton控件,然后將所有RadioButton控件手動(dòng)分配到一個(gè)組中。這種情況下,該組可為任意名稱;具有相同組名的所有單選按鈕視為一個(gè)組的組成部分。(3)RadioButton控件的常用事件CheckedChanged

事件。在默認(rèn)情況下,CheckedChanged

事件并不立即導(dǎo)致向服務(wù)器發(fā)送Web窗體頁(yè),而是在下一次發(fā)送窗體時(shí)(比如單擊ButtonWeb服務(wù)器控件時(shí)),在服務(wù)器代碼中引發(fā)該事件。如果要使CheckedChanged

事件導(dǎo)致立即發(fā)送,必須將RadioButton

控件的AutoPostBack

屬性設(shè)置為true。例如,在窗體頁(yè)上添加一個(gè)TextBox控件和一個(gè)RadioButton控件,單擊RadioButton控件則在文本框顯示文字。RadioButton控件的CheckedChanged

事件響應(yīng)程序?yàn)椋篜rivateSubRadioButton1_CheckedChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesRadioButton1.CheckedChangedTextBox1.Text=RadioButton1.TextEndSub運(yùn)行結(jié)果如圖6-9所示。2.RadioButtonList控件RadioButtonList控件是單一控件,可作為單選按鈕列表項(xiàng)集合的父控件。每個(gè)單選按鈕列表項(xiàng)都是一個(gè)單獨(dú)的對(duì)象,具有自己的屬性。實(shí)際上,它的作用與多個(gè)RadioButton控件組成一組相同,都是用來(lái)讓用戶在一組相關(guān)的選項(xiàng)中選擇一項(xiàng),當(dāng)這一組中的某個(gè)單選鈕控件被選中時(shí),該組中的其它單選鈕控件將自動(dòng)處于不選中狀態(tài)。在工具箱中RadioButtonList控件的圖示為。RadioButtonList的默認(rèn)名稱為RadioButtonList1,RadioButtonList2,……等。 雙擊或用鼠標(biāo)拖動(dòng)工具箱中的RadioButtonList控件,可將按鈕加入到窗體,重復(fù)該操作可加入多個(gè)按鈕。加入到窗體的按鈕可用鼠標(biāo)拖放到窗體的任意位置并可以改變按鈕的大小,并通過(guò)設(shè)置TextAlign

屬性來(lái)更改標(biāo)題的方向。(1)RadioButtonList控件的語(yǔ)法格式

<asp:RadioButtonListid="RadioButtonList控件標(biāo)識(shí)符"AutoPostBack="是否回發(fā)事件(True|False)"CellPadding="列表項(xiàng)的填充值"DataSource="<%數(shù)據(jù)綁定表達(dá)式%>"DataTextField="綁定字段"DataValueField="綁定字段"RepeatColumns="列表項(xiàng)的列數(shù)"RepeatDirection="列表項(xiàng)的方向(Vertical|Horizontal)"RepeatLayout="列表項(xiàng)的呈現(xiàn)方式(Flow|Table)"TextAlign="文本對(duì)齊方式(Right|Left)"OnSelectedIndexChanged="事件響應(yīng)函數(shù)的名字"runat="server"><asp:ListItemText="列表項(xiàng)的文本"Value="列表項(xiàng)的關(guān)聯(lián)值"Selected="是否被選中(True|False)"/></asp:RadioButtonList>

(2)RadioButtonList控件的常用屬性

RadioButtonList的許多屬性與RadioButton相同,其特有的屬性有:Items:設(shè)置列表中項(xiàng)的集合。選擇該屬性右側(cè)的,則彈出一個(gè)如圖6-10所示的ListItem集合編輯器窗口,在此窗口內(nèi)選擇“添加(A)”按鈕,可添加列表項(xiàng)。列表項(xiàng)的Selected屬性表示該列表項(xiàng)的初始選中狀態(tài);Text屬性表示該列表項(xiàng)的選項(xiàng)文本內(nèi)容;Value屬性表示與某個(gè)列表項(xiàng)關(guān)聯(lián)的值。RepeatColumns:設(shè)置列表項(xiàng)的列數(shù),例如當(dāng)屬性值設(shè)為3時(shí),則為三列。RepeatDirection:設(shè)置列表項(xiàng)的方向??伤脚帕谢虼怪迸帕?。RepeatLayout:設(shè)置組內(nèi)列表項(xiàng)(單選按鈕)的布局。取值為Table,則在表中顯示列表項(xiàng);取值為Flow,不以表結(jié)構(gòu)的形式顯示列表項(xiàng)。(3)RadioButtonList控件的常用事件RadioButtonList控件在用戶更改列表中選定的單選按鈕時(shí)會(huì)引發(fā)SelectedIndexChanged

事件。默認(rèn)情況下,這一事件并不導(dǎo)致向服務(wù)器發(fā)送窗體,但可以通過(guò)將列表項(xiàng)的RadioButton的AutoPostBack

屬性設(shè)置為true來(lái)指定這一選項(xiàng)。3.Checkbox控件CheckBox控件又稱為復(fù)選框,它與單選按鈕一樣,也給用戶提供一組選項(xiàng)供用戶選擇。但它與單選按鈕有所不同,每個(gè)復(fù)選框都是一個(gè)單獨(dú)的選項(xiàng),用戶既可以選擇它,也可以不選擇它,不存在互斥的問(wèn)題,可以同時(shí)選擇多項(xiàng)。若單擊復(fù)選框,則復(fù)選框中間出現(xiàn)一個(gè)對(duì)號(hào),表示該項(xiàng)被選中。再次單擊被選中的復(fù)選框,則取消對(duì)該復(fù)選框的選擇。在工具箱中CheckBox

控件的圖示為。復(fù)選框的默認(rèn)名稱為checkBox1,checkBox2,……等。雙擊或用鼠標(biāo)拖動(dòng)工具箱中的CheckBox控件,可將復(fù)選框加入到窗體,重復(fù)該操作可加入多個(gè)復(fù)選框。加入到窗體的復(fù)選框可用鼠標(biāo)拖放到窗體的任意位置并可以改變復(fù)選框的大小,并通過(guò)設(shè)置TextAlign

屬性來(lái)更改標(biāo)題的方向。(1)CheckBox控件的語(yǔ)法格式<asp:CheckBoxid="CheckBox控件標(biāo)識(shí)符"AutoPostBack="是否回發(fā)事件(True|False)"Text="控件的標(biāo)題文字"TextAlign="文本對(duì)齊方式(Right|Left)"Checked="是否被選中(True|False)"OnCheckedChanged="事件響應(yīng)函數(shù)的名字"runat="server"/>(2)CheckBox控件的常用屬性Text屬性:設(shè)置CheckBox控件的標(biāo)題文字。TextAlign屬性:設(shè)置文本標(biāo)題相對(duì)于復(fù)選框的對(duì)齊方式。有2種選擇,即Left和right,選擇right時(shí)文本標(biāo)題位于復(fù)選框的右側(cè)。BackColor屬性:設(shè)置控件的背景色。ForeColor屬性:設(shè)置控件的所包含文字或圖形的前景色。Font屬性:設(shè)置控件中文字的字體。Visible屬性:設(shè)置復(fù)選框控件是否可見。Checked屬性:復(fù)選框按鈕是否被選中。如果復(fù)選框被選中,則其Checked屬性為true。(3)CheckBox控件的常用事件CheckedChanged事件在用戶選擇CheckBox控件時(shí)引發(fā)。在默認(rèn)情況下,CheckedChanged

事件并不立即導(dǎo)致向服務(wù)器發(fā)送Web窗體頁(yè),而是在下一次發(fā)送窗體時(shí)在服務(wù)器代碼中引發(fā)該事件。如果要使CheckedChanged

事件導(dǎo)致立即發(fā)送,必須將CheckBox控件的AutoPostBack

屬性設(shè)置為true。動(dòng)手做:[例6-7]選擇學(xué)習(xí)媒介【界面設(shè)計(jì)】復(fù)選框常用于建立具有多選功能的工程界面。圖6-11是一個(gè)使用復(fù)選框選擇學(xué)習(xí)媒介的界面。在Web窗體頁(yè)上放置一個(gè)文本框控件(TextBox1)、3個(gè)RadioButton控件(RadioButton1、RadioButton2和RadioButton3)、3個(gè)CheckBox控件(CheckBox1、CheckBox2和CheckBox3)和2個(gè)按鈕控件(Button1和Button2)。整個(gè)Web窗體頁(yè)的代碼如下:<%@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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論