控件是图形用户界面的小型构建块,其中包括文本框,按钮,复选框,列表框,标签以及许多其他工具。使用这些工具,用户可以输入数据,进行选择并设置他们的偏好。
控件还用于结构化作业,如验证,数据访问,安全性,创建母版页和数据操作。
asp.net使用五种类型的web控件,它们是:
asp.net服务器控件是asp.net中使用的主要控件。这些控件可以分为以下几类:
adrotator
,fileupload
和calendar
控件。使用服务器控件的语法是:
<asp:controltype id ="controlid" runat="server" property1=value1 [property2=value2] />
另外,visual studio 具有以下功能,可以帮助制作无误码:
具有可视方面的asp.net服务器控件是从webcontrol
类派生的,并继承了此类的所有属性,事件和方法。
webcontrol
类本身和一些其他不可视化呈现的服务器控件都是从system.web.ui.control
类派生的。例如,placeholder
控件或xml控件。
asp.net服务器控件继承webcontrol
和system.web.ui.control
类的所有属性,事件和方法。
下表显示了所有服务器控件通用的继承属性:
编号 | 属性 | 描述 |
---|---|---|
1 | accesskey |
用alt 键按下此键将焦点移到控件上。 |
2 | attributes |
它是任意属性(仅用于渲染)的集合,它们不与控件上的属性相对应。 |
3 | backcolor |
背景颜色。 |
4 | bindingcontainer |
包含此控件的数据绑定的控件。 |
5 | bordercolor |
边框颜色。 |
6 | borderstyle |
边框格式 |
7 | borderwidth |
边框宽度 |
8 | causesvalidation |
指示是否验证。 |
9 | childcontrolcreated |
它指示服务器控件的子控件是否已创建。 |
10 | clientid |
html标记的控件id。 |
11 | context |
与服务器控件关联的httpcontext对象。 |
12 | controls |
包含在控件中的所有控件的集合。 |
13 | controlstyle |
web服务器控件的风格(样式)。 |
14 | cssclass |
css类 |
15 | dataitemcontainer |
如果命名容器实现了idataitemcontainer ,则获取对命名容器的引用。 |
16 | datakeyscontainer |
如果命名容器实现了idatakeyscontrol ,则获取对命名容器的引用。 |
17 | designmode |
它指示控件是否在设计表面上使用。 |
18 | disabledcssclass |
获取或设置css控件禁用时应用于呈现的html元素的css类。 |
19 | enabled |
指示控件是否变灰。 |
20 | enabletheming |
表示主题是否适用于控件。 |
21 | enableviewstate |
指示是否保持控件的视图状态。 |
22 | events |
获取控件的事件处理程序委托的列表。 |
23 | font |
字体 |
24 | forecolor |
前景颜色。 |
25 | hasattributes |
指示控件是否设置了属性。 |
26 | haschildviewstate |
指示当前服务器控件的子控件是否具有任何保存的视图状态设置。 |
28 | height |
以像素或% 为单位来设置高度。 |
30 | id |
控件的标识符。 |
31 | ischildcontrolstatecleared |
指示此控件中包含的控件是否具有控件状态。 |
32 | isenabled |
获取一个指示控件是否启用值。 |
33 | istrackingviewstate |
它指示服务器控件是否将更改保存到其视图状态。 |
34 | isviewstateenabled |
它指示是否对此控件启用视图状态。 |
35 | loadviewstatebyid |
它指示控件是否参与通过id而不是索引来加载其视图状态。 |
36 | page |
包含该控件的页面。 |
37 | parent |
父控件。 |
38 | renderingcompatibility |
它指定了呈现的html将兼容的asp.net版本。 |
39 | site |
在设计图面上呈现时承载当前控件的容器。 |
40 | skinid |
获取或设置要应用于控件的外观。 |
41 | style |
获取将在web服务器控件的外部标记上呈现为样式属性的文本属性的集合。 |
42 | tabindex |
获取或设置web服务器控件的选项卡索引。 |
43 | tagkey |
获取对应于此web服务器控件的htmltextwritertag 值。 |
44 | tagname |
获取控件标记的名称。 |
45 | templatecontrol |
包含此控件的模板。 |
46 | templatesourcedirectory |
获取包含此控件的页面或控件的虚拟目录。 |
47 | tooltip |
获取或设置鼠标指针悬停在web服务器控件上时显示的文本。 |
48 | uniqueid |
唯一标识符。 |
49 | viewstate |
获取状态信息的字典,该字典可跨多个同一页面的请求保存和恢复服务器控件的视图状态。 |
50 | viewstateignorecase |
它指出statebag 对象是否区分大小写。 |
51 | viewstatemode |
获取或设置此控件的视图状态模式。 |
52 | visible |
它指示服务器控件是否可见。 |
53 | width |
获取或设置web服务器控件的宽度。 |
服务器控件的方法
下表提供了服务器控件的方法:
编号 | 方法 | 描述 |
---|---|---|
1 | addattributestorender |
将需要呈现的html属性和样式添加到指定的htmltextwritertag 。 |
2 | addedcontrol |
在子控件添加到控件对象的控件集合后调用。 |
3 | addparsedsubobject |
通知服务器控件已经解析了元素(xml或html),并将该元素添加到服务器控件的控件集合中。 |
4 | applystylesheetskin |
将页面样式表中定义的样式属性应用于控件。 |
5 | clearcachedclientid |
基础结构,将缓存的clientid 值设置为null 。 |
6 | clearchildcontrolstate |
删除服务器控件的子控件的控件状态信息。 |
7 | clearchildstate |
删除所有服务器控件的子控件的视图状态和控件状态信息。 |
8 | clearchildviewstate |
删除所有服务器控件的子控件的视图状态信息。 |
9 | createchildcontrols |
用于创建子控件。 |
10 | createcontrolcollection |
创建一个新的controlcollection 对象来保存子控件。 |
11 | createcontrolstyle |
创建用于实现所有样式相关属性的样式对象。 |
12 | databind |
将数据源绑定到服务器控件及其所有子控件。 |
13 | databind(boolean) |
将数据源绑定到服务器控件及其所有子控件,并使用一个选项来引发databinding 事件。 |
14 | databindchildren |
将数据源绑定到服务器控件的子控件。 |
15 | dispose |
使服务器控件在从内存释放之前执行最终清理。 |
16 | ensurechildcontrols |
确定服务器控件是否包含子控件。如果没有,则创建子控件。 |
17 | ensureid |
为没有标识符的控件创建一个标识符。 |
18 | equals(object) |
确定指定的对象(object )是否等于当前对象。 |
19 | finalize |
在对象被垃圾回收回收之前,允许对象尝试释放资源并执行其他清理操作。 |
20 | findcontrol(string) |
使用指定的id 参数在当前命名容器中搜索服务器控件。 |
21 | findcontrol(string, int32) |
在当前命名容器中搜索具有指定标识和整数的服务器控件。 |
22 | focus |
将输入焦点设置为控件。 |
23 | getdesignmodestate |
获取控件的设计时数据。 |
24 | gettype |
获取当前实例的类型。 |
25 | getuniqueidrelativeto |
返回指定控件的uniqueid 属性的前缀部分。 |
26 | hascontrols |
确定服务器控件是否包含任何子控件。 |
27 | hasevents |
指示是否为控件或任何子控件注册事件。 |
28 | isliteralcontent |
确定服务器控件是否仅保存文字内容。 |
29 | loadcontrolstate |
恢复控制状态信息。 |
30 | loadviewstate |
恢复视图状态信息。 |
31 | mappathsecure |
检索虚拟路径(绝对或相对)映射到的物理路径。 |
32 | memberwiseclone |
创建当前对象的浅表副本。 |
33 | mergestyle |
将指定样式的非空白元素复制到web控件,但不覆盖控件的任何现有样式元素。 |
34 | onbubbleevent |
确定是否将服务器控件的事件传递给页面的ui服务器控件层次结构。 |
35 | ondatabinding |
引发数据绑定事件。 |
36 | oninit |
引发init 事件。 |
37 | onload |
引发load 事件。 |
38 | onprerender |
引发prerender 事件。 |
39 | onunload |
引发unload 事件。 |
40 | openfile |
获取用于读取文件的流。 |
41 | removedcontrol |
在从控件对象的控件集合中删除子控件后调用。 |
42 | render |
将控件呈现给指定的html编写器。 |
43 | renderbegintag |
将控件的html开始标记呈现给指定的写入器。 |
44 | renderchildren |
将服务器控件的子项的内容输出到提供的htmltextwriter 对象,该对象将要呈现的内容写入客户端。 |
45 | rendercontents |
将控件的内容呈现给指定的写入器。 |
46 | rendercontrol(htmltextwriter) |
将服务器控件内容输出到提供的htmltextwriter 对象,并在启用跟踪时存储有关该控件的跟踪信息。 |
47 | renderendtag |
将控件的html结束标记呈现给指定的写入器。 |
48 | resolveadapter |
获取负责渲染指定控件的控件适配器。 |
49 | savecontrolstate |
保存页面发回服务器以来发生的所有服务器控件状态更改。 |
50 | saveviewstate |
保存trackviewstate 方法被调用后修改的任何状态。 |
51 | setdesignmodestate |
为控件设置设计时数据。 |
52 | tostring |
返回表示当前对象的字符串。 |
53 | trackviewstate |
使控件跟踪其视图状态的更改,以便它们可以存储在对象的视图状态属性中。 |
打开visual studio创建一个空的网站项目:servercontrols,如下所示 -
并在这个新的项目中,添加一个新的web窗体文件 - default.aspx。
下面来看看服务器控件 - 一个树视图控件。 树视图控件位于导航控件下。 其他导航控件是:菜单控件和sitemappath控件。
在页面上添加一个树视图控件。 从任务中选择编辑节点使用树视图节点编辑器编辑每个节点,如下所示:
当创建了节点,在设计视图中看起来如下所示:
自动套用格式任务使用箭头,如下所示格式化树视图:
在页面上添加一个标签控件和一个文本框控件,分别命名为lblmessage
和txtmessage
。
编写几行代码,以确保选择特定节点时,标签控件显示节点文本,文本框显示其下的所有子节点(如果有的话)。 现在default.aspx的代码内容如下:
<%@ page language="c#" autoeventwireup="true" codefile="default.aspx.cs" inherits="_default" %>
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>服务器控件示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:treeview id="treeview1" runat="server" imageset="arrows" onselectednodechanged="treeview1_selectednodechanged1">
<hovernodestyle font-underline="true" forecolor="#5555dd" />
<nodes>
<asp:treenode text="小牛技术有限公司" value="小牛技术有限公司">
<asp:treenode text="技术部" value="技术部">
<asp:treenode text="陈java" value="陈java"></asp:treenode>
<asp:treenode text="李php" value="李php"></asp:treenode>
<asp:treenode text="张mysql" value="张mysql"></asp:treenode>
</asp:treenode>
<asp:treenode text="市场部" value="市场部">
<asp:treenode text="李小双" value="李小双"></asp:treenode>
<asp:treenode text="罗十步" value="罗十步"></asp:treenode>
<asp:treenode text="渣渣辉" value="渣渣辉"></asp:treenode>
</asp:treenode>
</asp:treenode>
</nodes>
<nodestyle font-names="verdana" font-size="8pt" forecolor="black" horizontalpadding="5px" nodespacing="0px" verticalpadding="0px" />
<parentnodestyle font-bold="false" />
<selectednodestyle font-underline="true" forecolor="#5555dd" horizontalpadding="0px" verticalpadding="0px" />
</asp:treeview>
<br />
<asp:label id="txtmessage" runat="server"></asp:label>
<br />
<asp:label id="lblmessage" runat="server"></asp:label>
</div>
</form>
</body>
</html>
default.aspx.cs 的代码内容如下:
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;
public partial class _default : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
txtmessage.text = "page_load ";
}
protected void treeview1_selectednodechanged1(object sender, eventargs e)
{
txtmessage.text = " ";
lblmessage.text = "最近选择: " + treeview1.selectednode.text;
treenodecollection childnodes = treeview1.selectednode.childnodes;
if (childnodes != null)
{
txtmessage.text = " ";
foreach (treenode t in childnodes)
{
txtmessage.text += ", "+t.value;
}
}
}
}
执行该页面以查看效果。可以看到现在能够展开和折叠节点。