【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件

知识点: 理解 ASP.NET 的控件的分类、 掌握服务器控件和页面回发的原理、 掌握基本的 Web 服务器控件、 掌握服务器控件的客户端事件处理。

 

         在第一课【使用ASP.NET开发Web项目】第一课——初识ASP.NET中,我么创建了第一个ASP.NET程序,也已经初步认识到了 ASP.NET WebForm 中的 Button、Label 和 TextBox 控件。Asp.net之所以开发方便和快捷,关键是它有一组强大的控件库,包括 HTML 控件、HTML 服务器控件和 Web服务器控件。

        我们经常使用的是 Web 服务器控件,根据它们功能的侧重点不同,Web 服务器控件可以分为标准控件、具有强大数据绑定功能的数据控件、用于检测输入的验证控件等。通过本章的学习,可以掌握所有 ASP.NET 控件的共有特性、常用的标准控件及服务器控件的客户端事件处理的方式。

 

1、控件概述

        在 ASP.NET 中,控件分为 HTML 控件、HTML 服务器控件和 Web 服务器控件。不管什么控件,最终会生成 HTML 代码,由浏览器根据 HTML 代码解析后呈现。

1.1    ASP.NET中的客户端和服务端

        客户端一般由浏览器来充当,服务端一般由IIS 这类的服务器和网站代码来实现! 用于提供浏览服务的服务器端软件,称为 Web 服务器。

        常用的web服务器: IIS 微软集成在Windows Server 服务器上的 Web 服务器软件,全称为 Internet Information Server,又称互联网信息服务器。 ASP.NET Development Server 集成在 Visual Studio 2005 和 2008 中的 Web 服务器,可以处理本机的请求,用于 Web 应用程序开发中使用。

ASP.NET中客户端控件和服务端控件的区别

  • 客户端控件:即普通Html控件,使用script控制操作,由客户端浏览器解释执行。
  • 服务端控件:即Asp.Net的控件,这些控件在服务器端解释执行,生成根据用户的浏览器而定的html元素。

 

1.2    HTML 控件

        HTML 标签,比如是一个文本框标签,在 ASP.NET 中,这种标签称作 HTML 控件。ASP.NET 不会对这种控件做处理,即在客户端运行,我们也无法为 HTML 控件绑定服务器端事件,即在服务器端无法用代码捕获它,只能在客户端通过 javascript 等程序语言来控制。因为 HTML 控件不消耗服务器资源,所以如果仅仅强调客户端的应用,那么用 HTML 控件即可。

 

1.3    HTML 服务器控件

        我们可以将 HTML 控件转换为 HTML 服务器控件,方法是在 HTML 标签中添加runat="server"的属性,这个属性声明了该控件在服务器端运行。在 ASP.NET 执行的过程中,ASP.NET 将创建包含runat="server"属性的元素实例,如果需要在后置代码中使用此实例,则需要为控件分配id 属性。

示例练习1:HTML服务器控件的使用

示例效果:用户在输入框里输入姓名,点击【确定】按钮时,输出针对该姓名的欢迎语。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第1张图片

第一步:在VS中新建asp.net web项目,并添加一个web窗体,使用HTML服务器控件,制作基本界面。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第2张图片


    
请输入姓名:

代码提示:

  • 具有runat="server"属性的所有控件都必须放在具有runat="server"属性的 form 中。
  • onserverclick是HTML服务器控件的单击事件。

第二步:在解决方案资源管理器中,找到当前WebForm1.aspx,点击左侧的三角形,双击打开文件WebForm1.aspx.cs,编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第3张图片

        protected void btnSure_ServerClick(object sender, EventArgs e)
        {
            Response.Write("欢迎您!" + txtName.Value);
        }

注意:这里的事件,需要自己在WebForm1.aspx.cs文件里写。

 

1.4      Web服务器控件

       与 HTML 服务器控件不同,Web 服务器控件不是由 HTML 元素直接转换而来的,而是微软重新定义的一套控件。第一章使用的 TextBox、Label 和 Button 都是 Web 服务器控件。Web 服务器控件提供统一的编程模型、包含方法以及与之相关的事件处理程序,并且这些代码都在服务器端执行。在 ASP.NET 中,我们平时使用的都是 Web 服务器控件。Web 服务器控件的标签都是以“asp:” 开头,称为标记前缀,后面是控件类型,如:

注意:虽然runat="server"是 Web 服务器控件的默认属性,但该属性不能省略不写,否则会出现编译错误。

 

1.4      HTML控件、HTML服务器控件、web服务器控件之间的区别     

  • html控件:,运行在客户端
  • html服务器控件:在服务器端运行
  • web服务器控件:在服务器端运行

       HTML 服务器控件和 Web 服务器控件都是在服务器端运行,它们通过设置 id 属性,在服务器端用id来自动捕获它们。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第4张图片

 

2、Web服务器控件的应用

2.1      显示文本控件  

(1)     Label控件  

        Label 控件是 ASP.NET 中最常用的控件之一,用于将文本内容显示在网页上,支持以编程方式动态修改显示的内容。Label 控件常用的成员如表所示。

      成员名称

成员类型

                  说明

Text

属性

获取或者设置控件的文本内容

AccessKey

属性

导航到其他控件的快捷键

AssociatedControlID

属性

使用快捷键导航的目的控件ID

Visible

属性

布尔值,设置控件是否可见

 

示例练习2:Label控件的使用

示例效果:网页运行后,用户通过快捷键“Alt+U”,快速访问文本框。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第5张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example2,如下图所示

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第6张图片

第二步:Web窗体添加成功后,默认打开源代码界面,我们可以单击下方的【设计】,切换界面。然后从工具箱里分别拖一个Label控件和一个TextBox控件,并进行相关属性设置。

  • TextBox控件:ID属性设置为:txtName
  • Label控件:ID属性设置为:lblName,AccessKey属性设置为:U,AssociatedControlID属性设置为:txtName,Text属性设置为:用户名(U)

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第7张图片

第三步:启动运行调试,查看效果。效果出现后,可以在VS中,回到【源代码】界面,查看代码的变化。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第8张图片


    

注意:当我们在设计界面拖放控件,并设置属性时,会自动在aspx页面生成对应代码。

提示:Label控件的Text属性中如果包含HTML标签,则会被浏览器解析并执行。

思考:在浏览器中查看页面源代码,看看两个源代码之间有什么区别,为什么?

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第9张图片

 

(2)     TextBox控件  

        在页面中,使用 TextBox 控件收集用户输入的信息或者显示文本。它可以配置为单行、多行或者密码类型。TextBox 常用的成员如表所示。

成员名称

成员类型

                                      说明

AutoPostBack

属性

布尔值,规定当内容改变时,是否回传到服务器。默认是 false

Text

属性

获取或者设置控件的文本内容

TextMode

属性

设置 TextBox的模式(单行、多行或密码等)

ReadOnly

属性

布尔值,设置能否改变文本框中的文本

MaxLength

属性

在 TextBox 中所允许的最大字符数

Rows

属性

设置TextBox 的高度(仅在 TextMode="Multiline" 时使用)

Columns

属性

设置TextBox 的宽度

OnTextChanged

事件

当 TextBox 中的文本被更改时所触发的事件

示例练习3:TextBox控件的使用

示例效果:网页运行后,用户按照提示输入用户名、密码和留言,当用户留言结束离开TextBox控件时(失去焦点),触发OnTextChanged事件,显示欢迎语。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第10张图片

 

第一步:在当前项目中,新添加一个web窗体,并命名为Example3,然后在body里写一个4行2列的表格,做基础界面设计。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第11张图片


    
用户名:
密 码:
留 言:

第二步:在head标签里,写一对style标签,写css样式,来控制表格的样式。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第12张图片

    

第三步:点击【设计】,进入设计界面,选中留言对应的TextBox控件(ID属性被设置为txtContent),在属性面板点击【事件】,找到该控件的TextChanged事件,双击进入。(注意,这时候事件后面有事件名,是因为我们在第一步写源代码时,已经写好了事件名称。)

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第13张图片

在txtContent_TextChanged事件中,编写代码:

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第14张图片

        protected void txtContent_TextChanged(object sender, EventArgs e)
        {
            lblInfo.Text = "您好:" + txtName.Text + ",您的留言是:" + txtContent.Text;
        }

第四步:启动运行调试,查看效果。

示例代码分析:

(1)OnTextChanged 事件在输入焦点离开 TextBox 时才被引发。

(2)AutoPostBack 属性用于设置当触发文本框的 OnTextChanged 事件时,是否自动产生向服务器的回发。为了避免由于回发引起页面的刷新,默认把 AutoPostBack 属性设置为false。

(3)本例中,将用于输入留言的 TextBox 的 AutoPostBack 属性设置为 true,使 TextBox失去焦点后自动回发到服务器,以便立即处理 OnTextChanged 事件。

 

2.2      显示图片控件  

        开发网站时,常常用到各种图片。Image 控件用于在网页上呈现图片,最终生成元素,支持以编程的方式管理显示的图片。Image 控件常用成员如表所示。

成员名称

类型

                     说    明

ImageUrl

属性

显示的图片所在的URL地址

ToolTip

属性

当鼠标指向图片时的说明性文字

AlternateText

属性

图像不可用时取代图像显示的文字

示例练习4:Image控件的使用

示例效果:网页运行后,会随机显示一张图片,鼠标移动到图片上面,会出现该图片的说明性文字。刷新页面,会随机显示新的图片,同样,鼠标移动到该图片上也有提示文字。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第15张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example4,然后在设计界面,拖放一个Image控件,并设置属性。ID属性:imgWuhan、Height属性:200px、Width属性:300px

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第16张图片

切换到源代码模式,会看到我们添加的Image控件,已经被自动添加。


    

第二步:在解决方案资源管理器中,鼠标右键单击当前项目名称WebApplication2,依次选择【添加】——【新建文件夹】——【将新建的文件夹命名为img】。然后鼠标右键单击文件夹【img】,再单击【在文件资源管理器中打开文件夹】,然后将自己需要的图片,存放在该文件夹里。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第17张图片

第三步:在解决方案资源管理器中,鼠标单击Example4.aspx文件前面的三角形,找到他对应的Example4.aspx.cs文件,双击进入,在Page_Load事件里编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第18张图片

        protected void Page_Load(object sender, EventArgs e)
        {
            Random num = new Random();
            int i = num.Next(1, 5);//随机产生1到5之间的整数
            imgWuhan.ImageUrl = "img/" + i + ".jpg";//构造图片的相对路径
            switch (i)
            {
                case 1:
                    imgWuhan.ToolTip = "凌波门";//设置图片的ToolTip属性
                    break;
                case 2:
                    imgWuhan.ToolTip = "武汉关";
                    break;
                case 3:
                    imgWuhan.ToolTip = "黄鹤楼";
                    break;
                case 4:
                    imgWuhan.ToolTip = "鹦鹉洲大桥";
                    break;
            }
        }

第四步:启动运行调试,查看效果。

 

2.3      控件的超级链接

        HyperLink 控件用于在网页上以图片或文本方式呈现一个链接,常用成员如表所示。

成员名称

成员类型

说明

Text

属性

显示链接的文本

ImageUrl

属性

显示链接的图片所在的URL地址

NavigateUrl

属性

链接的目的页面的URL地址

ToolTip

属性

当鼠标指向链接时的说明性文字

示例练习5:HyperLink控件的使用

示例效果:网页运行后,看到一个文本超链接“百度首页”、一张图片超链接,分别点击他们,都可以打开百度首页。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第19张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example5,然后在设计界面,拖放一个HyperLink控件,并设置属性。ID属性:hlkText、NavigateUrl属性:http://www.baidu.com、Target属性:_blank、Text属性:百度首页。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第20张图片

第二步:在设计界面,继续拖放一个HyperLink控件,并设置属性。ID属性:hlkImage、ImageHeight属性:100px、ImageUrl属性:img/baidu.png、ImageWidth属性:200px、NavigateUrl属性:http://www.baidu.com、Target属性:_blank。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第21张图片

注意:这里设置ImageUrl属性时,采用的是相对路径,可以提前在自己项目的img文件夹中存放一张图片。如果自己练习时的图片名称、格式等不一致时,要学会自己更改,否则可能会导致图片不可见)

 

第三步:启动运行调试,查看效果。(可以切换到源代码界面,查看代码)


    
百度首页 HyperLink

        HyperLink 使用 Text 属性时,呈现一个文本方式的链接,最终会生成一个包含文本的标签(百度首页 )。同时使用 ImageUrl 属性和Text 属性时,程序会优先显示 ImageUrl 属性中的图片,当图片不可用时则显示 Text 属性中的文字,HyperLink 控件会为 ImageUrl 属性生成标签,并使用标签嵌套(HyperLink )。

 

2.4      单选按钮的应用

        在 ASP.NET WebForm 中,单选按钮主要有 RadioButton 控件提供。RadioButton 控件用于在页面创建一个单选项,可以使用GroupName属性,将多个单选项分为一组来创建多个互斥的选项。RadioButton 常用成员如表 所示。

成员名称

成员类型

                   说明

Text

属性

获取或者设置单选按钮的文本

TextAlign

属性

设置文本和单选按钮的对齐方式

GroupName

属性

分组的名称

Checked

属性

获取或者设置是否选中控件

CheckedChanged

事件

选择状态改变时触发

示例练习6:RadioButton控件的使用

示例效果:网页运行后,有一组单选按钮选项,默认选项“男”被选中,用户可以根据需要,点选不同的选项,每次只能选中一个。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第22张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example6,然后在设计界面,写上文字“性别:”,再文字后面拖放一个RadioButton控件,并设置属性。ID属性:rdoSexM、Checked属性:True、GroupName属性:gender、Text属性:男。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第23张图片

第二步:在当前设计界面,继续拖放一个RadioButton控件,并设置属性。ID属性:rdoSexW、GroupName属性:gender、Text属性:女。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第24张图片

第三步:启动运行调试,查看效果。(可以切换到源代码界面,查看代码)

 

2.5      复选框的应用

        在 ASP.NET WebForm 应用程序中,CheckBox 控件用来在页面中创建复选框,常用成员见表 所示。

成员名称

成员类型

                   说明

Text

属性

获取或者设置单选按钮的文本

TextAlign

属性

设置文本和单选按钮的对齐方式

Checked

属性

获取或者设置是否选中控件

CheckedChanged

事件

选择状态改变时触发

示例练习7:CheckBox控件的使用

示例效果:网页运行后,有一组复选框按钮选项,默认选项“篮球”被选中,用户可以根据需要,点选不同的选项,选中以后,单击确定按钮,会输出用户选中的选项。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第25张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example7,然后在设计界面,写上文字“请选择你喜欢的运动:”,在文字后面拖放一个CheckBox控件,并设置属性。ID属性:chkSport1、Checked属性:True、Text属性:篮球。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第26张图片

继续添加两个CheckBox控件,分别设置他们的属性:

ID属性:chkSport2、Text属性:足球

ID属性:chkSport3、Text属性:乒乓球

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第27张图片

第二步:在当前设计界面,换行以后,继续拖放Button控件,并设置其属性,ID属性:btnSure、Text属性:确定。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第28张图片

第三步:在当前设计界面,换行以后,输入文字“你选择的爱好是:”,然后再文字后面拖放一个Label控件,并设置其属性,ID属性:lblState、Text属性: (设置为空)。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第29张图片

可以查看一下此时的源代码:


    
请选择你喜欢的运动:

你选择的爱好是:

第四步:在当前设计界面,双击Button控件,进入该控件的事件,编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第30张图片

        protected void btnSure_Click(object sender, EventArgs e)
        {
            foreach (Control ct in form1.Controls)//遍历id是form1的元素中,所有的控件
            {
                if (ct.GetType().ToString().Equals("System.Web.UI.WebControls.CheckBox"))//如果遍历到的控件是复选框
                {
                    CheckBox cb = (CheckBox)ct;//将ct进行强制类型转换,转换成CheckBox类型,并赋值给变量cb。因为foreach循环中的变量使用了控制的最高超类 Control ,不能直接将它赋给CheckBox的引用变量cb,因此一定要做向下转型,强制转为CheckBox类型的引用。
                    if (cb.Checked == true)//如果变量的Checked属性是true,代表着用户勾选了这个复选框
                    {
                        lblState.Text += cb.Text + "  ";//使用cb的Text属性获取该复选框的内容,并赋值给lblState控件的Text属性
                    }
                }
            }
        }

代码解析:

  • foreach (Control ct in form1.Controls){};使用foreach循环,遍历指定元素中的所有控件。(注意:本示例里使用的是form1.Controls,因为我们的源代码里默认的是 
    ,如果使用其他id,请注意替换。)
  • GetType()方法:GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。 (区别:typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称。)
  • ToString()方法:用于将对象实例以字符串的形式显式。(区别:GetType()方法用于获取对象实例的类型)
  • Equals()方法:  用来比较引用相等,意味着比较的不是两个对象,而是两个对象的引用,比较两个对象指向的内存空间的内容是不是相同。

注意:CheckBox 最终生成的 HTML 元素是

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第31张图片

 

 

2.6      列表控件

        列表控件主要用于显示若干个选项,让用户选择其中一项或多项,具体过程取决于列表控件允许单选还是多项。列表控件常用的成员如表 所示。

    成员名称

   类型

                                     说          明

AutoPostBack

属性

获取或设置一个值,当更改选项时,是否自动产生向服务器的回发

Items

属性

获取控件列表项的集合

SelectedValue

属性

获取列表控件中选定项的值或设置列表控件中包含指定值的项

Text

属性

获取或设置控件的SelectedValue属性

SelectedItem

属性

获取列表控件中索引最小的选定项

SelectedIndex

属性

或者或设置控件中选定项的最低序号索引

DataSource

属性

获取或设置对象,列表控件从该对象中检索其数据项列表

DataTextField

属性

获取或设置为列表项提供文本内容的数据源字段

DataValueField

属性

获取或设置为列表项提供值的数据源字段

DataBind

方法

将数据源绑定到控件及其所有子控件中

在 ASP.NET 中,列表控件包括 DropDownList 控件、ListBox 控件、RadioButtonList 控件和CheckBoxList 控件。

  • DropDownList 控件:用来制作下拉列表框,默认情况下,其选项都是第一项(索引为 0 的项)。 该控件最终会生成一个HTMl 元素,Items 属性中的每一个选项都将生成
  • RadioButtonList 控件:用于在页面上创建一组单选按钮,可以设置选项的排列与布局。
  • CheckBoxList 控件:用于在页面上创建一组复选框,可以设置选项的排列与布局。

除了列表控件常用的成员之外, RadioButtonList 与 CheckBoxList 的常用成员见表所示。

成员名称

成员类型

说明

TextAlign

属性

文字与控件的对齐方式

RepeatDirection

属性

列表显示时排列的方向

RepeatColumns

属性

列表显示的列数

 

示例练习8:列表控件的使用

示例效果:网页运行后,显示各种类型的列表控件,用户可以根据需要进行选择。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第32张图片

第一步:根据案例要求准备好数据库文件。(推荐阅读:SQL Server数据库第三课2:使用create语句新建数据库、数据库表)

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第33张图片

--创建数据库
create database CarSYS;
--使用数据库
use CarSYS;
--创建数据库表
create table Brand(
	BrandId int primary key identity(1,1),	--编号列
	BrandName nvarchar(100) not null		--品牌名称列
);	
--向表中插入数据
insert into Brand (BrandName)
select '红旗' union
select '宝马' union
select '奥迪' union
select '保时捷' union
select '宾利' ;

第二步:设计前台界面,在当前项目中,新添加一个web窗体,并命名为Example8。

在设计界面,写上文字“DropDownList控件:”,在文字后面拖放一个DropDownList控件,并设置属性。ID属性:ddlCarType、Height属性:30px、Width属性:176px。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第34张图片

换行以后继续输入文字“ListBox控件:”,然后在文字后面拖放一个ListBox控件,并设置属性。ID属性:lbCarType、Height属性:86px、Width属性:122px、Rows属性:5。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第35张图片

换行以后继续输入文字“RadioButtonList控件:”,然后在文字后面拖放一个RadioButtonList控件,并设置属性。ID属性:rblCarType、RepeatColumns属性:5、RepeatDirection属性:Horizontal。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第36张图片

换行以后继续输入文字“CheckBoxList控件:”,然后在文字后面拖放一个CheckBoxList控件,并设置属性。ID属性:cblCarType、RepeatColumns属性:5、RepeatDirection属性:Horizontal。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第37张图片

此时预览网页,看一下效果,由于没有绑定数据库,所以控件里的内容都是空的

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第38张图片

第三步:连接数据库,在解决方案资源管理器中,鼠标单击Example8.aspx文件前面的三角形,找到他对应的Example8.aspx.cs文件,双击进入,在Page_Load事件里编写代码。(数据库连接操作,推荐阅读:ADO.NET数据库开发(三)DataSet 对象和DataAdapter 对象的使用)

        protected void Page_Load(object sender, EventArgs e)
        {
            string constr = "server=LAPTOP-IN3E6IJP\\SQLEXPRESS; integrated security=true; database=CarSYS";//声明一个字符串用来存放连接数据库的信息
            string sql = "select * from Brand";//声明一个字符串,用来存放查询数据库表语句
            SqlConnection con = new SqlConnection(constr);//创建一个SqlConnection对象,注意要引用using System.Data.SqlClient;
            try       //将可能出错的语句放在try语句里
            {
                con.Open();//打开数据连接
                SqlDataAdapter sda = new SqlDataAdapter(sql, con);//创建一个SqlDataAdapter对象,
                DataSet ds = new DataSet();//创建一个DataSet对象,注意要引用using System.Data;
                sda.Fill(ds);
                //用DropDownList显示品牌
                ddlCarType.DataSource = ds.Tables[0]; //设置表格对象,列表控件从该对象中检索其数据项列表
                ddlCarType.DataTextField = "BrandName";//设置为列表项提供文本内容的数据源字段
                ddlCarType.DataValueField = "BrandId";//设置为列表项提供值的数据源字段
                ddlCarType.DataBind();//将数据源绑定到控件中
                ddlCarType.Items.Insert(0, new ListItem("请选择", "-1"));//插入"请选择"项,必须放到数据绑定之后:
               //用ListBox显示品牌
                lbCarType.DataSource = ds.Tables[0];
                lbCarType.DataTextField = "BrandName";
                lbCarType.DataValueField = "BrandId";
                lbCarType.DataBind();
                //用RadioButtonList显示品牌
                rblCarType.DataSource = ds.Tables[0];
                rblCarType.DataTextField = "BrandName";
                rblCarType.DataValueField = "BrandId";
                rblCarType.DataBind();
                rblCarType.SelectedIndex = 0;
                //用CheckBoxList显示品牌
                cblCarType.DataSource = ds.Tables[0];
                cblCarType.DataTextField = "BrandName";
                cblCarType.DataValueField = "BrandId";
                cblCarType.DataBind();
                cblCarType.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
            finally
            {
                con.Close();//关闭数据库连接
            }
        }

 

2.6      HiddenField控件

        HiddenField 控件是 ASP.NET 表单类控件,它没有用户界面,包含一个常用属性 Value。HiddenField 控件会生成“type=’hidden’”的 input 元素。

        在实际项目中,为了避免页面回发时使数据恢复初始化的状态,可以使用 HiddenField 控件来保存这些数据。

 

示例练习9:HiddenField控件的使用

示例效果:单击 Button 时,Label 显示的数据从 0 开始,以 1 的步长逐步递增的功能。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第39张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example9,然后在设计界面,拖放一个HiddenField控件,并设置属性。ID属性:hfNumber、Value属性:0。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第40张图片

继续拖放一个Label控件,并设置属性。ID属性:lblCount、Text属性为:累计到:0。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第41张图片

继续拖放一个Button控件,并设置属性。ID属性:btnAdd、Text属性为:累计。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第42张图片

第二步:在解决方案资源管理器中,鼠标单击Example9.aspx文件前面的三角形,找到他对应的Example9.aspx.cs文件,双击进入,编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第43张图片

        public int i
        {
            get
            {
                return int.Parse(hfNumber.Value);
            }
            set
            {
                hfNumber.Value = value.ToString();
            }
        }

第三步:在解决方案资源管理器中,切换到Example9.aspx文件的设计界面,双击Button按钮进入Click事件,编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第44张图片

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            i++;
            lblCount.Text = "累计到:" + i;
        }

 

 

3、    服务器控件的客户端事件处理

           ASP.NET 事件主要是指在服务器端处理的事件,但对有些服务器控件的操作并不会触发页面回发,可以将服务器控件的 AutoPostback 属性设置为 true,使该控件立即触发页面回发,以便服务器端处理操作引发的事件。但是回发会导致整个页面的频繁刷新,降低客户的体验度,也会增加服务器的负担,所以可以将一些工作借助客户端事件进行处理。

           客户端事件在浏览器中引发后立即捕获,由浏览器中的 javascript 脚本负责处理;在ASP.NET 中,服务器控件借助 Attributes 属性来支持客户端的各种事件。

           Attributes 属性由 System.Web.UI.WebControls.WebControl 类提供,所有呈现为 HTMl 标签的 Web 服务器控件都拥有此属性。Attributes 属性是在服务器端为服务器控件添加客户端处理代码的解决方案。

 

示例练习10:服务器控件的客户端事件处理

示例效果:单击 Web 服务器控件 Button 时,首先弹出对话框,提示用户“您确认删除吗”,如果用户单击“确定”,则提示“正在执行删除操作”

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第45张图片

第一步:在当前项目中,新添加一个web窗体,并命名为Example10,然后在设计界面,拖放一个Button控件,并设置属性。ID属性:btnDel、Text属性:删除。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第46张图片

第二步:在解决方案资源管理器中,鼠标单击Example10.aspx文件前面的三角形,找到他对应的Example10.aspx.cs文件,双击进入,编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第47张图片

        protected void Page_Load(object sender, EventArgs e)
        {
            //使用Attributes属性为服务器控件添加onclick客户端事件的处理
            btnDel.Attributes.Add("onclick", "javascript:return confirm('您确认删除吗?')");
        }

第三步:在解决方案资源管理器中,切换到Example10.aspx文件的设计界面,双击Button按钮进入Click事件,编写代码。

【ASP.NET】第二课——ASP.NET WebForm中的控件,掌握基本的Web服务器控件_第48张图片

        protected void btnDel_Click(object sender, EventArgs e)
        {
            Response.Write("正在执行删除操作!");
        }

 

        注意:案例中,Button 服务器控件既写了客户端单击事件, 又写了服务器端单击事件。那么当单击该 Button 时,先执行客户端单击事件“return confirm('您确认删除吗?')”,如果返回的是 false,则不会触发服务器端的单击事件,也不会导致回发。如果返回的是 true,那么在执行完客户端脚本之后进行回发。注意回发时,也要先触发 Page_Load 事件,然后再触发服务器端的单击事件。

 

 

 

 

==============这里是结束分割线===============

你可能感兴趣的:(ASP.NET)