zoukankan      html  css  js  c++  java
  • 第二章 用Web服务器控件建立表单

     

    第二章 用Web服务器控件建立表单

    主要内容

    建立智能表单

    控制页面导航

    在控件上进行格式化

    1       建立智能表单

    1.1      Label控件

    重要属性是Text。

    给Text属性赋值,你可以:第一、声明时赋值;第二、代码中赋值。

    Label控件的内容被显示在<span>标记内(可以用浏览器查看源码)。

    1.2      TextBox控件

    可以用来显示三种HTML标记。分别是:文本输入域、口令输入域和文本区域。

    重要的属性有:

    AutoPostBack 若为True,改变文本框的内容之后,将自动发送含有此文本框的表单

    Columns

    MaxLength

    ReadOnly

    Rows

    Text

    TextMode 有效值有三个:

    MultiLine

    Password

    SingleLine

    Wrap

    重要的事件

    OnTextChanged

     

    关于“TextMode属性”的三个值???

    SingleLine     这是默认值,一般单行输入文本域。

    Password       显示口令输入域

    MultiLine      文本区域TextArea

     

    1.3      Button控件

    可以在表单中添加的Button控件有三种(不论哪种按钮,点击时都是【将包含按钮的表单提交给Web服务器】):

    Button     标准HTML表单按钮

    默认情况下,它显示的是提交按钮。(即为<input type=submit>标记)

    重要属性有:

    Text

    CommandName

    CommandArgument

    CausesValidation       设置表单是否被检验。默认为true。

    重要事件:

    Click

    Command

    ImageButton       图像表单按钮

    重要属性(只列出与Button不同的):

    AlternativeText         当不能显示图像时,需要显示的文本

    ImageAlign         对齐方式,取值为:AbsBottom、AbsMiddle、BaseLine、Bottom、Left、Middle、NotSet、Right、TextTop和Top

    ImageURL          图像的URL

    重要事件(同Button控件)

    注意:ImageButton控件的Click事件,其事件参数对象的类型为ImageClickEventArgs,它能够传递鼠标点击位置的x和y坐标

    LinkButton         超文本链接

    显示为超文本链接,点击时,将含有此按钮的表单中的所有域都提交给服务器。

    LinkButton控件在不支持JavaScript的浏览器中不起作用(禁用也算)。

     

    1.4      RadioButton和RadioButtonList控件

    RadioButton可以很方便的改变布局;

    而RadioButtonList便于显示来自数据库或集合的按钮列表。

     

    1.4.1 RadioButton控件

    添加控件时,设置GroupName属性,可以对按钮进行分组。(同GroupName的按钮属于同组)

    而CheckedChanged事件则可以用来判断哪个按钮被选中了。(此事件发生时机为【新的控件被选中时】,相对的若默认按钮被选中时直接提交表单,不会触发此事件)

    RadioButton控件也支持AutoPostBack属性。

    1.4.2 RadioButtonList

    跟布局有关属性:

    CellPadding

    边框宽度(单位像素数)

    CellSpacing

    各按钮间距

    RepeatColumns

    显示时列数

    RepeatDirection

    方向。取值Horizontal和Vertical(默认)

    RepeatLayout

    布局。取值Table(默认)和Flow

    数据库有关属性

    DataSource

     

    DataTextField

    指定字段

    DataTextFormatString

     

    DataValueField

    作为【单选按钮的值】的数据库字段

    DataMember

    数据源表

    一般属性

    Items

    SelectedIndex

    SelectedItem

    方法

    DataBind

    事件

    SelectedIndexChanged

     

    产生RadioButtonList控件的三种方法:

    第一,声明时列出单选按钮

    <asp:RadioButtonList ID=radlFavoriteColor Runat=Server>

    <asp:ListItem Text=红色/>

    <asp:ListItem Text=蓝色 Selected=True/>

    <asp:ListItem Text=黄色 />

    </asp:RadioButtonList>

    第二,将条目添加到RadioButtonList类的ListItemCollection集合

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">

        Protected Sub page_load(ByVal s As Object, ByVal e As EventArgs)

            If Not IsPostBack Then

                radl1.Items.Add("红色的")

                radl1.Items.Add("绿色")

                radl1.Items.Add("蓝色")

                radl1.SelectedIndex = 2

            End If

        End Sub

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

        <asp:RadioButtonList ID="radl1" runat="server"></asp:RadioButtonList>

        </div>

        </form>

    </body>

    </html>

    第三,绑定到一个数据源

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">

        Sub page_load()

            '定义一个数据源,可以用ArrayList代替

            Dim colss As New ArrayList

            If Not IsPostBack Then '

                colss.Add("一种颜色")

                colss.Add("两种颜色")

                colss.Add("三种颜色")

                colss.Add("第五种")

                '下面开始绑定数据源

                radl2.DataSource = colss

                radl2.DataBind()

            End If

        End Sub

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

        <asp:RadioButtonList ID="radl2" runat="server" />

        </div>

        </form>

    </body>

    </html>

    注意:ArrayList是一个集合,可以把它看做没有固定尺寸的数组。

    另外,在将RadioButtonList绑定到数据源时,还可以使用其DataTextFormatString属性对每个选项的文本进行格式化。
    <asp:RadioButtonList ID="radl2" DataTextFormatString="这种颜色叫:{0}" runat="server" />

     

    如何判断【当前选中的按钮】?

    使用SelectedIndex属性,返回当前选中按钮的索引号。(注意第一项的索引号为0)

    或者,利用SelectedItem属性,返回条目。(返回值类型ListItem)

     

    如何【控制布局】?

    使用RepeatDirection属性,若为Vertical,表示按钮先纵向,再到下一列显示;若为Horizontal,则先横向,再到下一行。

     

    如果,启动了RadioButtonList控件的AutoPostBack属性,当【选择新的单选按钮时】会引发SelectedIndexChanged事件。

    1.5      CheckBox和CheckBoxList复选框

    CheckBox控件

    特殊属性:Checked。(为True表示被选中)

    事件:CheckedChanged

    CheckBoxList控件

    1.6      DropDown控件

    包含一个ListItemCollection集合类型的属性Items。

    1.7      ListBox控件

    特殊属性:

    Rows       表示显示的行的个数。默认为4

    SelectionMode          决定是否能多选。可能值为Multipe和Single。

     

     

    2       控制页面导航

    内容:

    如何将HTML表单提交到另一个页面,并且获取表单信息。

    如何使用Redirect方法自动将用户送到新页面

    如何用HyperLink控件将页面链接起来。

    2.1      将表单提交到另一个页面

    使用<form>标记的服务器端版本,不能将表单发送到另一个页面。

     

    若要“将表单提交到另一个页面”,可以使用标准HTML表单标记。

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">

     

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

    </head>

    <body>

        <form id="form1" method="post" action="Results.aspx"><%--首先修改这里--%>

        <div>

        username:<br />

        <input name="username" /> <%--注意这里没有使用ASP.NET控件--%>

        <p>

        </p>

        Comments:<br />

        <textarea name ="comments" cols="50" rows="10"></textarea><%--注意这里没有使用ASP.NET控件--%>   

        <p></p>

        <input type="submit" ><%--注意这里没有使用ASP.NET控件--%>

       

        </div>

        </form>

    </body>

    </html>

    注意:<form method="post" action="Results.aspx">。标记的Action属性被设置为新页面Results.aspx,这是表单信息会被发送的地方。

    注意:因为表单被发送到另一个页面,你不能使用ASP.NET控件获取此信息。

    『你可以使用HTTPRequest类的Params集合来操作』

    注意:你还可以使用HTTPRequest类的Form集合获取表单数据。

    Params和Form集合的差异???

    Rarams集合还代表了QueryStrings、ServerVaribles和Cookies。

     

        'page_Load中获取内容

        Sub page_load()

            lblUserName.Text = Request.Params("Username")

            lblComments.Text = Request.Params("Comments")

        End Sub

     

    2.2      使用Redirect()方法

    在大多数情况下,应该利用视图状态,并且将表单发送回其本身。

    问题是:在用户成功地填写表单之后,如何将他传送到新的页面?

    传送用户的最好办法是使用Response.Redirect()方法。(可以传送到任何页面或别的网站页面上)

    通常,在调用Redirect()方法之前,会将表单数据保存到文件或数据库表中。

     

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">

        Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs)

            '在这里,先保存表单信息,这里掠过

            Response.Redirect("ThankYou.aspx")

        End Sub

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>Redirect.aspx</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

        <h1>先加控件</h1>

        <br />

        Username:<br />

        <asp:TextBox ID="txtUsername" runat ="server" />

        <p />

        Comments:<br />

        <asp:TextBox ID="txtComments" TextMode="multiLine" runat="server" />

        <p />

        <asp:Button ID="btnSubmit" Text="Submit!" runat="server" OnClick="btnSubmit_Click" />

        </div>

        </form>

    </body>

    </html>

    2.3      使用HyperLink控件

    如果使用HyperLink控件,可以将一个asp.net页面链接到另一个页面。

    HyperLink控件,可以显示文本或者图像,作为显示。

     

    重要属性:

    ImageUrl

    显示用图像的URL

    NavigateUrl

    目标页面的URL

    Target

    链接的目标窗口或框架,可以是:_top、_self、_parent、_search、_blank。

    Text

    链接的文本标签

     

    HyperLink控件相对于简单的HTML链接(即<a href />)的优点????

    就是可以在代码中操作它的属性。

     

    <script runat="server">

        Sub page_load()

            If TimeOfDay > #5:00:00 PM# Then

                lnkHelpLink.NavigateUrl = "AfterHoursHelp.aspx"

                lnkHelpLink.Text = "After Hours Help"

            Else

                lnkHelpLink.NavigateUrl = "NormalHelp.aspx"

                lnkHelpLink.Text = "Normal help"

            End If

        End Sub

    </script>

     

    3       在控件上进行格式化

    主要内容:

    第一.所有web控件共有的格式化属性

    第二.应用“级联样式表(CSS)”

    第三.应用“类”到Web控件

    3.1      基本Web控件属性

    所有Web控件的基类是WebControl。

     

    在WebControl类中定义的【基本Web控件格式化属性简表】

    AccessKey

    选择控件用的热键。需要按住ALT再加某字母

    TabIndex

     

    BackColor

    背景色。可以是名称或RGB值(#FF0000)

    BorderStyle

    边框外观。有效值:Dashed、Dotted、Double、Groove、Inset、None、NotSet、Outset、Ridge、Solid。

    BorderWidth

    控件边框宽度(单位像素)

    Font-Bold

     

    Font-Italic

     

    Font-Name

     

    Font-Names

     

    Font-Overline

    文本上面划线

    Font-Size

    单位像素

    Font-Strikeout

    删除线

    Font-UnderLine

     

    ForeColor

     

    Height

     

    ToolTip

     

    Width

     

    注意,一些属性需要IE浏览器支持,还有一些需要依赖于样式表。

     

    FontUnit 类型(表示字体的大小)

    其中:公开方法

    Parse

    已重载。 将指定的字符串转换为其 FontUnit 等效项。

    txt1.Font.Size = FontUnit.Parse(ddlFontSize.SelectedItem.Text)

     

    Color结构(在System.Drawing名称空间)

    其公开方法

    FromName

    基于预定义颜色的指定名称创建 Color 结构。

    Dim strBackColor As Color = Color.FromName(ddlBackColor.SelectedItem.Text)

     

    3.2      在Web控件上应用样式表

     

    举例:将字符串中每个单词的各字母自动变成大写,可以通过在Label控件的Style属性中设置Text-Transform=Capitalize.

    <asp:Label

    ID=lbl1

    Style=Text-Transform:Capitalize

    Text=this is some Text

    Runat=Server/>

    浏览器中观察源码,会产生一个包含Style属性的<span>标记,如下:

    <span id=lbl1 style=Text-Transform:Capitalize>this is some Text</span>

     

    上面的效果,也可以使用CssClass属性(将一个样式单类赋值给Web控件)来实现。

     

    样式单可以定义在页面文件内部。(通过指定控件的CssClass属性。注意此属性值的大小写)

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">

     

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

        <%--首先,加入css,添加<style>标记--%>

        <style type="text/css" >

        .myClass

        {

        text-align:justify;

        font:50pt Script;

        }

        </style>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

        <%--这里是第二步--%>

        <asp:Label ID="lbl1" Width="10" CssClass="myClass" Text="this is some text" runat="server" /><%--注意CssClass="myClass",大小写不一样--%>

        </div>

        </form>

    </body>

    </html>

     

    还可以通过代码添加样式(通过使用控件style属性【由WebControl继承而来】,来指定文字样式)

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">  

        Protected Sub lbtn1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

            '第二步,通过IDE,增加LinkButtonClick事件

            lbl1.Style("text-transform") = "capitalize"

        End Sub

     

        Protected Sub lbtn2_Click(ByVal sender As Object, ByVal e As System.EventArgs)

            lbl1.Style("text-transform") = "lowercase"

        End Sub

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

        <%--第一步,添加控件LinkButton--%>

        <asp:Label ID="lbl1" Text="This is some text!" runat="server" /><p />

        <asp:LinkButton ID="lbtn1" Text="首字母大写" runat="server" OnClick="lbtn1_Click" /><br />

        <asp:LinkButton ID="lbtn2" Text="全部小写" runat="server" OnClick="lbtn2_Click" />  

        </div>

        </form>

    </body>

    </html>

     

    下面演示“通过控件的CssClass属性,给控件分配不同的样式单类。”

    有两个样式单类myClass1和myClass2,用按钮控制分别赋给一个Label

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

     

    <script runat="server">

        Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

            '第二步,给LinkButton增加事件'

            Label1.CssClass = "myclass1"

        End Sub

     

        Protected Sub LinkButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs)

            Label1.CssClass = "myclass2"

        End Sub

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

       

        <%--第一步,定义样式单类--%><%--注意位置在<head>标记里--%>

        <style>

            .myclass1

            {

                font:72pt 方正粗活意简体;

                color: blue;

            }

            .myclass2

            {

                font:36pt 方正粗活意繁体;

                color:red;

            }

        </style>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

            <asp:Label ID="Label1" runat="server" Text="Here is some text! 这有一些文字!"></asp:Label><br />

            <br />

            <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">指定为 myclass1</asp:LinkButton><br />

            <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">指定为 myclass2</asp:LinkButton>&nbsp;</div>

        </form>

    </body>

    </html>

     

    关于Style类

    (前面学的是将样式单应用到控件上)

    还可以通过Style类来支持服务器端样式。(即,显示创建Style类的实例,并将它应用于多个控件)

    <%@ Page Language="VB" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <%@ import Namespace="system.Drawing" %>

    <script runat="server">

     

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

            '先建立Style类示例'

            Dim myStyle As New Style '

            myStyle.BackColor = Color.Yellow

            myStyle.ForeColor = Color.Green

            myStyle.BorderStyle = BorderStyle.Dashed

            myStyle.BorderWidth = New Unit(4) 'Unit表示长度度量单位'

            TextBox1.ApplyStyle(myStyle)

            TextBox2.ApplyStyle(myStyle)

            TextBox3.ApplyStyle(myStyle)

           

            myStyle.BackColor = Color.Aqua

            myStyle.ForeColor = Color.DarkGoldenrod

            Button1.ApplyStyle(myStyle)

            Button2.ApplyStyle(myStyle)

           

            myStyle.BorderStyle = BorderStyle.Groove

            myStyle.BorderWidth = New Unit(1)

            LinkButton1.ApplyStyle(myStyle)

            LinkButton2.ApplyStyle(myStyle)

           

            myStyle.Font.Name = "hakuyocaoshu7000"

            myStyle.Font.Size = 73

            HyperLink1.ApplyStyle(myStyle)

        End Sub

    </script>

     

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>无标题页</title>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

            <asp:TextBox ID="TextBox1" runat="server">opaoopampgoaasdg</asp:TextBox><br />

            <asp:TextBox ID="TextBox2" runat="server">白日依山尽</asp:TextBox><br />

            <asp:TextBox ID="TextBox3" runat="server">黄河如海浪Rive Drive hair</asp:TextBox><br />

            <p />

            <asp:Button ID="Button1" runat="server" Text="Button" /><br />

            <asp:Button ID="Button2" runat="server" Text="Button" /><br />

            <p />

            <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton><br />

            <asp:LinkButton ID="LinkButton2" runat="server">LinkButton</asp:LinkButton><br />

            <p />

            <asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink></div>

        </form>

    </body>

    </html>

     

    注意:ApplyStyle()方法,是将Style类应用于WebControl;还有一个MergeStyle()方法,是将样式合并到WebControl

     

  • 相关阅读:
    【BZOJ5416】【NOI2018】冒泡排序(动态规划)
    【BZOJ4832】抵制克苏恩(矩阵快速幂,动态规划)
    【UOJ#340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划)
    【BZOJ3142】[HNOI2013]数列(组合计数)
    【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
    【Luogu4707】重返现世(min-max容斥)
    【UOJ#422】【集训队作业2018】小Z的礼物(min-max容斥,轮廓线dp)
    【APIO2018】铁人两项(圆方树,动态规划)
    【BZOJ4005】[JLOI2015] 骗我呢(容斥,组合计数)
    【LOJ#6072】苹果树(矩阵树定理,折半搜索,容斥)
  • 原文地址:https://www.cnblogs.com/lizunicon/p/1409406.html
Copyright © 2011-2022 走看看