鍍金池/ 教程/ C#/ 服務(wù)器控件
調(diào)試
管理狀態(tài)
Panel 控件
Web 服務(wù)
語言集成查詢
數(shù)據(jù)源
基礎(chǔ)控件
廣告輪轉(zhuǎn)器
服務(wù)器端
服務(wù)器控件
ADO.NET
多線程
HTML 服務(wù)器
生命周期
Ajax 控制
客戶端
異常處理
環(huán)境設(shè)置
部署
個性化
驗證器
多視圖
日歷
文件上傳
ASP.NET - 數(shù)據(jù)綁定
數(shù)據(jù)庫存取
實(shí)例
自定義控件
簡介
配置
數(shù)據(jù)緩存
安全性
指令
事件處理

服務(wù)器控件

控件是在圖形用戶界面中的小功能塊,其中包括文本框,按鈕,復(fù)選框,列表框,標(biāo)簽,和許多其它工具。利用這些工具,用戶可以輸入數(shù)據(jù),進(jìn)行選擇并注明自己的喜好。

控件也用于結(jié)構(gòu)性工作,如驗證,數(shù)據(jù)訪問,安全保證,創(chuàng)建母版頁和數(shù)據(jù)操作。

ASP.NET 使用五種類型的 Web 控件,它們是:

  • HTML 控件
  • HTML 服務(wù)器控件
  • ASP.NET 服務(wù)器控件
  • ASP.NET Ajax 服務(wù)器控件
  • 用戶控件和自定義控件

ASP.NET 服務(wù)器控件是在 ASP.NET 中使用的主要控件。這些控件可被分成以下幾類:

  • 驗證控件 - 用來驗證用戶輸入,并通過運(yùn)行客戶端腳本進(jìn)行工作。
  • 數(shù)據(jù)源控件 - 提供數(shù)據(jù)綁定到不同的數(shù)據(jù)源功能。
  • 數(shù)據(jù)視圖控件 - 該控件為各種列表和表格,可以顯示從數(shù)據(jù)源綁定的數(shù)據(jù)。
  • 個性化控件 - 根據(jù)用戶的喜好,基于用戶信息進(jìn)行頁面?zhèn)€性化設(shè)置。
  • 登陸和安全控件 - 提供用戶身份驗證。
  • 母版頁 - 提供整個應(yīng)用程序一致的布局和界面。
  • 導(dǎo)航控件 - 幫助用戶導(dǎo)航。例如,菜單,樹視圖等。
  • 豐富功能控件 - 實(shí)施特殊功能。例如:AdRotator, FileUpload, 和日歷控件。

使用服務(wù)器控件的基本語法是:

<asp:controlType  ID ="ControlID" runat="server" Property1=value1  [Property2=value2] />

此外,Visual Studio還具有以下特點(diǎn),以幫助產(chǎn)生無差錯代碼:

  • 在設(shè)計視圖中拖動和丟棄控件。
  • 顯示及自動完成特性的智能感知功能。
  • 直接設(shè)置屬性值的屬性窗口。

服務(wù)器控件的屬性

具有可視化功能的 ASP.NET 服務(wù)器控件來源于 WebControl 類,并且繼承該類別的所有屬性,事件以及方法。

WebControl 類本身以及其他不具有可視化功能的服務(wù)器控件都來源于 System.Web.UI.Control 類。例如,PlaceHolder 控件或 XML 控件。

ASP.Net 服務(wù)器控件繼承了 WebControl 和 System.Web.UI.Control 類的所有屬性,事件,以及方法。

下表顯示了通用于所有服務(wù)器控件的屬性:

屬性 描述
AccessKey 同時按下該按鍵以及 Alt 鍵以將焦點(diǎn)移至控件。
Attributes 它是不對應(yīng)控件屬性的任意屬性(僅用于視圖呈現(xiàn))的集合。
BackColor 背景色。
BindingContainer 包含數(shù)據(jù)綁定的控件。
BorderColor 邊框顏色。
BorderStyle 邊框樣式。
BorderWidth 邊框?qū)挾取?/td>
CausesValidation 引起驗證時顯示。
ChildControlCreated 表示服務(wù)器控件的子控件是否建立。
ClientID HTML 標(biāo)記的控件 ID。
Context 與服務(wù)器控件關(guān)聯(lián)的 HttpContext 對象。
Controls 控件內(nèi)全部控件的集合。
ControlStyle Web 服務(wù)器控件的樣式。
CssClass CSS 類。
DataItemContainer 若命名器執(zhí)行 IDataItemContainer,則為命名器提供參考。
DataKeysContainer 若命名器執(zhí)行 IDataKeysControl,則為命名器提供參考。
DesignMode 表示控件在設(shè)計界面是否被使用。
DisabledCssClass 當(dāng)控件禁用時,獲取或設(shè)置 CSS 類來應(yīng)用呈現(xiàn)的 HTML 元素。
Enabled 表示控件是否被禁用。
EnableTheming 表示主題是否適用于控件。
EnableViewState 表示是否維持控件的視圖狀態(tài)。
Events 獲取代表控件的事件處理程序的列表。
Font 字體設(shè)定。
Forecolor 前景顏色。
HasAttributes 表示控件是否具有屬性組。
HasChildViewState 表示當(dāng)前服務(wù)器控件的子控件是否具有任何已保存的視圖狀態(tài)設(shè)置。
Height 高度的像素或百分比。
ID 控件的標(biāo)識符。
IsChildControlStateCleared 表示包含在該控件內(nèi)部的控件是否具有控件狀態(tài)。
IsEnabled 獲取表示控件是否被啟用的值。
IsTrackingViewState 表示服務(wù)器控件是否會將更改保存到其視圖狀態(tài)。
IsViewStateEnabled 表示視圖狀態(tài)是否對該控件啟用。
LoadViewStateById 表示控件是否是由 ID 而非索引來參與加載其視圖狀態(tài)。
Page 包含控件的頁面。
Parent 家長控制功能。
RenderingCompatibility 指定呈現(xiàn)的 HTML 將與之兼容的 ASP.NET 版本。
Site 當(dāng)設(shè)計界面顯示時容納當(dāng)前控件的承載器。
SkinID 獲取或設(shè)置適用于控件的皮膚。
Style 獲取將在 Web 服務(wù)器控件的外部標(biāo)簽作為樣式屬性顯示的文本屬性的集合。
TabIndex 獲取或設(shè)置 Web 服務(wù)器控件的索引標(biāo)簽。
TagKey 獲取對應(yīng)該 Web 服務(wù)器控件的 HtmlTextWriterTag 值。
TagName 獲取控件標(biāo)簽的名稱。
TemplateControl 包含該控件的模板。
TemplateSourceDirectory 獲取頁面的虛擬目錄或包含在該控件中的控件。
ToolTip 獲取或設(shè)置當(dāng)鼠標(biāo)指針停在 Web 服務(wù)器控件時顯示的文本。
UniqueID 唯一的標(biāo)識符。
ViewState 獲取能夠穿越同一頁面的多重請求后保存和恢復(fù)服務(wù)器控件視圖狀態(tài)的狀態(tài)信息詞典。
ViewStateIgnoreCase 表示 StateBag 對象是否不區(qū)分大小寫。
ViewStateMode 獲取或設(shè)置該控件的視圖狀態(tài)。
Visible 表示服務(wù)器控件是否可見。
Width 獲取或設(shè)置 Web 服務(wù)器控件的寬度。

服務(wù)器控件的方法

服務(wù)器控件的方法在以下表格中呈現(xiàn):

方法 描述
AddAttributesToRender 添加需要呈現(xiàn)指定 HtmlTextWriterTag 的 HTML 屬性和樣式。
AddedControl 在子控件添加到控件對象的控件集合后調(diào)用。
AddParsedSubObject 通報服務(wù)器控件一個元素,XML 或 HTML 已被解析,并將該元素添加到服務(wù)器控件的控件集合。
ApplyStyleSheetSkin 將在頁面樣式表中定義的樣式屬性應(yīng)用到控件中。
ClearCachedClientID 基礎(chǔ)設(shè)施。設(shè)置緩存的 ClientID 值設(shè)置為 null。
ClearChildControlState 為服務(wù)器控件的子控件刪除控件狀態(tài)信息。
ClearChildState 為所有服務(wù)器控件的子控件刪除視圖狀態(tài)和控件狀態(tài)信息。
ClearChildViewState 為所有服務(wù)器控件的子控件刪除視圖狀態(tài)信息。
CreateChildControls 用于創(chuàng)建子控件。
CreateControlCollection 創(chuàng)建一個用于保存子控件的新控件集合。
CreateControlStyle 創(chuàng)建一個用于實(shí)現(xiàn)所有與樣式有關(guān)的屬性的樣式對象。
DataBind 將數(shù)據(jù)源綁定到服務(wù)器控件及其所有子控件。
DataBind(Boolean) 將數(shù)據(jù)源及可以引發(fā) DataBinding 事件的選項綁定到服務(wù)器控件及其所有子控件。
DataBindChildren 將數(shù)據(jù)源綁定到服務(wù)器控件的子控件。
Dispose 啟用一個服務(wù)器控件在其從內(nèi)存中釋放出來前去執(zhí)行最后的清理操作。
EnsureChildControls 確定服務(wù)器控件是否包含子控件。若沒有,則創(chuàng)建子控件。
EnsureID 為沒有標(biāo)識符的控件創(chuàng)建一個標(biāo)識符。
Equals(Object) 確定指定對象是否等于當(dāng)前對象。
Finalize 允許一個對象去嘗試釋放資源并在對象被回收站回收前執(zhí)行其他清理操作。
FindControl(String) 搜索當(dāng)前命名容器中具有指定 id 參數(shù)的服務(wù)器控件。
FindControl(String, Int32) 搜索當(dāng)前命名容器中具有指定 id 參數(shù)和整數(shù)的服務(wù)器控件。
Focus 為控件設(shè)置輸入焦點(diǎn)。
GetDesignModeState 獲取控件的設(shè)計時數(shù)據(jù)。
GetType 獲取當(dāng)前實(shí)例的類型。
GetUniqueIDRelativeTo 返回指定控件的唯一 ID 屬性的預(yù)固定部分。
HasControls 確定服務(wù)器控件是否包含子控件。
HasEvents 表示事件是否被控件或其他子控件注冊。
IsLiteralContent 確定服務(wù)器控件是否僅含有文字內(nèi)容。
LoadControlState 恢復(fù)控件狀態(tài)信息。
LoadViewState 恢復(fù)視圖狀態(tài)信息。
MapPathSecure 檢索絕對的或相對的虛擬路徑映射到的物理路徑。
MemberwiseClone 創(chuàng)建當(dāng)前對象的淺復(fù)制。
MergeStyle 復(fù)制指定樣式的 Web 控件的任意非空白元素,但不覆蓋該控件現(xiàn)有的任何樣式元素。
OnBubbleEvent 確定服務(wù)器控件的事件是否通過頁面的 UI 服務(wù)器控件層級。
OnDataBinding 引發(fā)數(shù)據(jù)綁定事件。
OnInit 引發(fā) Init 事件。
OnLoad 引發(fā)加載事件。
OnPreRender 引發(fā) PreRender 事件。
OnUnload 引發(fā)卸載事件。
OpenFile 獲取用于讀取文件的流。
RemovedControl 在子控件從控件對象的控件集合中移除后調(diào)用。
Render 顯示控件到指定的 HTML 作者。
RenderBeginTag 顯示控件的 HTML 開口標(biāo)簽到指定作者。
RenderChildren 輸出服務(wù)器控件子級的內(nèi)容到提供的 HtmlTextWriter 對象中,從而編寫呈現(xiàn)在客戶端上的內(nèi)容。
RenderContents 顯示控件內(nèi)容到指定作者。
RenderControl(HtmlTextWriter) 輸出服務(wù)器控件內(nèi)容到提供的 HtmlTextWriter 對象并在啟用跟蹤的情況下保存關(guān)于控件的跟蹤信息。
RenderEndTag 顯示控件的 HTML 結(jié)束標(biāo)簽到指定作者。
ResolveAdapter 獲取負(fù)責(zé)呈現(xiàn)指定控件的控件適配器。
SaveControlState 保存自頁面回發(fā)到服務(wù)器后出現(xiàn)的服務(wù)器控件的狀態(tài)改變。
SaveViewState 保存調(diào)用 TrackViewState 方法之后修改的任意狀態(tài)。
SetDesignModeState 為控件設(shè)置設(shè)計時數(shù)據(jù)。
ToString 返回代表當(dāng)前對象的字符串。
TrackViewState 引發(fā)控件跟蹤其視圖狀態(tài)的變化,使其可以存儲在該對象的視圖狀態(tài)屬性中。

實(shí)例

讓我們來看一看一個特定的服務(wù)器控件 - 樹型視圖控件。樹視圖控件屬于導(dǎo)航控件。其他導(dǎo)航控件是:菜單控件和 SiteMapPath 控件。

在頁面上添加樹視圖控件。從任務(wù)中選擇編輯結(jié)點(diǎn)...使用樹視圖結(jié)點(diǎn)編輯器編輯每個結(jié)點(diǎn),如下所示:

http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_edit_nodes.jpg" alt="image" />

當(dāng)成功創(chuàng)建結(jié)點(diǎn)之后,設(shè)計視圖下會有如下顯示:

http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_edit_nodes2.jpg" alt="image" />

AutoFormat... 任務(wù)允許您規(guī)定樹視圖的格式,如下所示:

http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_autoformat.jpg" alt="image" />

在頁面上添加一個標(biāo)簽控件和文本框控件并分別命名為 lblmessage 和 txtmessage。

寫幾行代碼,以確保當(dāng)一個特定結(jié)點(diǎn)被選中時,標(biāo)簽控件顯示結(jié)點(diǎn)文字且文本框顯示所有其下的子結(jié)點(diǎn)(如有)。后臺文件的代碼應(yīng)如下所示:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;

using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

namespace eventdemo {
   public partial class treeviewdemo : System.Web.UI.Page {

      protected void Page_Load(object sender, EventArgs e) { 
         txtmessage.Text = " "; 
      }

      protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) {

         txtmessage.Text = " "; 
         lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text;
         TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;

         if(childnodes != null) {
            txtmessage.Text = " ";

            foreach (TreeNode t in childnodes) {
               txtmessage.Text += t.Value;
            }
         }
      }
   }
}

執(zhí)行頁面以觀看效果,您將可以展開和折疊結(jié)點(diǎn)。

http://wiki.jikexueyuan.com/project/asp-net/images/asp.net_control_nodes.jpg" alt="image" />

上一篇:環(huán)境設(shè)置下一篇:個性化