ControlToValidate=\"1stNumber\" Text=\"*\" InitialValue=\"Please select a number\" /> 4.编程题 1)<%@ Page Language=\"C#\" %>
TextBox控件AutoPostBack 属性示例
2)参
(1) 设计Default.aspx页面
新建一个ASP.NET网站,向缺省主页Default.aspx中添加有关用于页面布局的HTML表格,按需要调整表格的行列数及各行列的宽、高。
(2) 设置Default.aspx中各控件的属性
首先将事先使用Photoshop等图像软件制作的标题图片、按钮图片和分隔线图片复制到站点所在的文件夹中,通常需要在站点文件夹内创建一个名为“images”的子文件夹,然后将页面中需要的图片文件复制到其中。
选择Image1控件,在属性窗口中单击ImageUrl栏右侧的按钮,打开图9-1所示的对话框。选择了需要的添加到控件中的图像文件后,单击【确定】按钮。如果在“选择图像”对话框中看不到images文件夹和其中的图片文件,可在“解决方案资源管理器”中右键单击项目名称,在弹出的快捷菜单中执行“刷新文件夹”命令。
图9-1 设置Image控件的ImageUrl属性
选择Image2控件,参照上面介绍的方法设置其ImageUrl属性,同时需要将Image2的Height(高)属性设置为“2px”。
对于6个ImageButton(ImageButton1~ImageButton6)控件,不但要设置其ImageUrl属性,还需要设置其PostBackUrl属性,以便当用户单击控件时可以将页面导航到指定的URL。
页面的Title(标题)属性和5个HyperLink的初始属性在页面的装入(Page_Load)事件中通过代码进行设置。
(3) 向站点中添加网页
在“解决方案资源管理器”中,在弹出的快捷菜单中执行“添加新项”命令,在打开的对话框中选择“Web窗体”,并指定网页名称后单击【添加】按钮。本例中需要为两个文本教程创建两个新页面,mac.aspx和computer.aspx。
其中mac.aspx由一些文字和一个Image控件组成,页面打开时如图9-2所示。由于mac.aspx页面中不包含动态内容,也无需编写任何程序代码,故该页面完全可以使用FrontPage等将其设计为静态网页(.htm),以减少服务器无谓的资源开销。
图9-2 mac.aspx页面
(4) 向ImageMap控件中添加图片
对于computer.aspx页面可按图9-3所示进行设计。在实际操作时可将前面设计完成的default.aspx复制一份,名称改为computer.aspx。(注意,应将包含原代码的default.aspx.cs文件同样复制一份,并改名为computer.aspx.cs)。然后将栏目标题改为“微型计算机硬件组成”并向页面中添加一个ImageMap控件。
图9-3 computer.aspx页面设计
在设置ImageMap控件的属性前,应将需要显示到控件中的图片文件(如本例的computer.jpg)复制到站点文件夹的images子文件夹中。在设计视图中选中ImageMap控件,在属性窗口中单击ImageUrl栏右侧的按钮,在打开的“选择图像”对话框中选择需要的图片文件名。若需要的图片未出现在文件列表中,可在解决方案资源管理器中,右键单击images文件,在弹出的快捷菜单中执行“刷新文件夹”命令。设置完毕的computer.aspx页面如图9-4所示。
图9-4 添加图片后的页面效果
(5) 设置ImageMap控件的HotSpots属性
ImageMap控件的HotSpots属性描述了控件中作用点的集合。在设计视图中选中ImageMap控件,在属性窗口中单击HotSpots栏右侧的右侧的按钮,打开“HotSpots集合编辑器”对话框,单击【添加】按钮向其中添加一个圆形作用点和一个矩形作用点。将圆形作用点的X、Y、R属性值分别设置为150,70和50;将矩形作用点的Bottom、Left、Right、Top属性值分别设置为130、265、210和10。
分别将圆形作用点和矩形作用点的NavigiteUrl属性指向事先通过FrontPage等工具制作完成的静态网页,display.htm和host.htm。为了能使目标网页能在新窗口中打开,应将作用点的Target属性设置为“_blank”。
这样,页面打开时,若用户将鼠标指针移动到了作用点区域,指针将变成表示超链接的“手形”标记,单击鼠标页面将被导航到指定页面,如图9-5所示。
图9-5 单击作用点区域打开新的网页
(6) 编写事件代码
Default.aspx页面被装入时执行的事件代码如下: protected void Page_Load(object sender, EventArgs e) {
this.Title = \"欢迎访问网上课堂\";
HyperLink1.Text =\"怎样设置和使用Foxmail\";
HyperLink1.NavigateUrl = \"rtsp://192.168.0.100:45/rm/01.rm\"; HyperLink2.Text =\"如何安装杀毒软件\";
HyperLink2.NavigateUrl = \"rtsp://192.168.0.100:554/rm/02.rm\"; HyperLink3.Text =\"更新Windows操作系统\";
HyperLink3.NavigateUrl = \"rtsp://192.168.0.100:554/rm/03.rm\"; HyperLink4.Text = \"如何查看网卡的MAC地址\"; HyperLink4.NavigateUrl = \"mac.aspx\"; HyperLink4.Target = \"_new\";
HyperLink5.Text = \"微型计算机的组成\"; HyperLink5.NavigateUrl = \"computer.aspx\";
}
computer.aspx页面被装入时执行的事件代码如下: protected void Page_Load(object sender, EventArgs e) {
this.Title = \"微型计算机硬件组成\"; //设置页面标题
} 3)
(1)页面设计
<%@ Page Language= \"C#\" AutoEventWireup=\"true\" CodeFile=\"Default.aspx.cs\" Inherits=\"_Default\" %>
图像地图的应用
(2)编辑逻辑
public partial class _Default : System.Web.UI.Page {
protected void ImageMap1_Click(object sender, ImageMapEventArgs e) {
string str = \" \";
switch (e.PostBackValue) {
case \"store\": str = \"商店\"; break; case \"hospital\": str = \"医院\"; break; case \"classroom\": str = \"教室\"; break; case \"mess\": str = \"食堂\"; break; case \"hall\": str = \"礼堂\"; break; }
lblMsg.Text = \"您现在正处于\" + str ; }
}
4) 程序设计步骤如下: (1) 设计Web页面
新建一个ASP.NET网站,切换到设计视图。向由系统自动创建的Default.aspx页面中添加一个用于布局的HTML表格,适当调整表格的行列数;向表格中添加必要的控件说明文字;添加4个用于接收用户输入数据的文本框TextBox1~TextBox4;2个按钮控件Button1~Button2;1个用于显示通过验证信息的标签控件Label1;添加2个必须项验证控件RequiredFieldValidator1~RequiredFieldValidator2,2个比较验证控件CompareValidator1~CompareValidator2,注意将必须项验证控件分别放置在用户名栏和密码栏的右侧单元格,将比较验证控件分别放置在确认密码和出生日期栏的右侧单元格;适当调整各控件的大小及位
置。
(2) 设置对象属性
各控件的初始属性设置见下表。
表 各验证控件的初始属性设置
控 件 RequiredFieldValidator1 Text ControlToValidate RequiredFieldValidator2 Text ControlToCompare CompareValidator1 ControlToValidate Text ControlToValidate Operator CompareValidator2 Text Type \"日期格式应为:1983-4-23\" Date 验证失败时显示的信息 指定数据类型为日期型 \"密码不能为空!\" txtPassword txtRepassword \"两次输入的密码不同!\" txtBirthday DataTypeCheck 验证失败时显示的信息 指定要与之比较的控件 指定要控制的控件 验证失败时显示的信息 指定要控制的控件 指定操作方式为数据类型比较 \"必须输入用户名\" txtPassword 验证失败时显示的信息 指定验证控件的验证对象为密码输入文本框 属 性 ControlToValidate 值 txtUsername 说 明 指定验证控件的验证对象 用于输入用户数据的文本框和用于显示输出信息的标签控件的ID属性及某些初始属性参见程序运行界面及程序代码。
(3) 编写事件代码
protected void Page_Load(object sender, EventArgs e) {
this.Title = \"CompareValidator控件应用示例\";
txtUsername.Focus(); //页面加载时,用户名文本框得到焦点 lblPass.Text = \"\"; //清除通过验证标签中的文本
}
protected void btnOK_Click(object sender, EventArgs e) {
lblPass.Text = \"本页已通过验证!\"; //通过验证后在标签中显示的信息
} 5)
(1)页面设计:
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"Default.aspx.cs\" Inherits=\"_Default\" %>
服务器端闰年检测 (2)逻辑设计:protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
int year;
year=int.Parse(args.Value);
if(year % 4 == 0 && year % 100 !=0 || year % 400 == 0) args.IsValid=true; else
args.IsValid=false; }
protected void Button1_Click(object sender, EventArgs e) {
if (Page.IsValid)
Label1.Text = \"页面检测通过\"; else
Label1.Text = \"页面检测未通过\"; }
第10章习题与练习
1.填空题 1)DataSet 2) Cookie 3) Connection
4)ConnectionString
5) 数据定义 、 数据操作 、 数据控制。
6) GridView 7)DetailsView 8) FormView
2.简答题
1) ADO.NET中的常用对象有哪些?它们的功能分别是什么? 答案:
DataSet对象及其子对象是真正使得ADO.NET与众不同的原因。它为离线数据提供了一种存储机制。DataSet对象从来不与任何数据源通信,对用来生成它的数据也一无所知。最好将它理解为内存中一个用来存储已经检索到数据的仓库。
Provider中包含许多针对数据源的组件,开发人员通过这些组件可以使程序与指定的数据源进行连接。Provider主要包括Connection对象、Command对象、DataReader对象以及DataAdapter对象。Provider用于建立数据源与数据集之间的连接,它能连接各种类型的数据源,并能按要求将数据源中的数据提供给数据集,或者将应用程序编辑后的数据发送回数据库。
这四个对象介绍如下:
以及任何 Connection对象:Connection对象负责建立和保持对数据源的连接,
连接特有的信息。
Command对象:Command对象存储将要送往数据源的查询以及任何适用参数。 DataReader对象:DataReader对象提供快速、仅前向的读取能力,用于快速遍
历记录。
DataAdapter对象:DataAdapter对象是连接DataSet对象和数据源的桥梁。
DataAdapter对象负责从Command对象检索数据并用返回的数据生成DataSet对象。它同时也负责将DataSet对象的改变永久性写回数据源。 2)Connection对象最常用的方法有哪些?它们的语法格式分别是什么? 答案: Open()方法
使用Open()方法打开一个数据库连接。为了减轻系统负担,应该尽可能晚地打开数据库。其语法格式为: 连接对象名.Open( )
Connection对象名:是创建的Connection对象的名称。
Close( )方法
使用Close( )方法关闭一个打开的数据库连接。为了减轻系统负担,应该减轻系统负担,应该尽可能早地关闭数据库。其语法格式为: 连接对象名.Close( ) CreateCommand( )方法
使用CreateCommand( )方法创建并返回一个与该连接关联的SqlCommand对象。其语法格式为:
连接对象名.CreateCommand( ) 返回值:返回一个Command对象。
3)在ADO.NET中,连接数据库的基本步骤是什么? 答案:
创建一个Connection类的实例,即声明一个新的Connection对象; 设置Connection对象的连接字符串属性 ConnectionString; 使用Open()方法或Close()方法打开或关闭连接.
4)GridView控件支持什么功能? 答案:
绑定到数据源控件。 内置的排序功能。
内置的更新和删除功能。 内置的分页功能。 内置的行选择功能。
对GridView对象模型进行编程访问以动态设置性和处理事件。 诸如CheckBoxField和ImageField等新的列类型。 用于超链接的多个数据字段。
用于选择、更新和删除的多个数据键字段。 可通过主题和样式自定义的外观。
持多种类型的数据存储区。数据存储区可以保存简单的非类型化数据(例 如一维数组),也可以保存类型化数据(例如 DataSet)。
可以将许多类型的数据存储区用作数据源,也可以在没有绑定数据源的情况 下操作 GridView 控件。
5)DetatailsView控件和FormView控件之间的主要差异是什么? DetatailsView和FormView之间的主要差异在于DetailsView具有内置的表格呈现方面,而FormView需要用户定义模板用于呈现FormView和DetaisView对象模型在其他方面非常类似。
与GridView和DetailsView控件不同的是FormView没有自己默认的显示布局,同时,它的图形化布局完全是通过模板自定义的,因此,每个模板都包括特定记录需要的所有命令按钮,大多数模板是可选的,但是必须为该控件的配置模式创建模板。例如,要插入记录的话,必须定义InsertItem Template。 3.程序设计题
1)针对不同的数据库,要使用不同的数据库连接对象:ADO. NET打开SQL Server连接的主要途径是使用SqlConnection对象的方法。
//建立SqlConnection对象违接数据库的宇符串
SqXStr SqlCormectidn myConn-new SqlConnection (SqlStr); //打开敗据庳的连接 myGonn.Open(); //关闭数据库的连接 myConn .Close (}
如何使用Command对象向数据库中添加记录,在文本框中输人花名,单击添加按钮,将输入内容添加到数据库中。
(1)建立主页面 新建一个网站,默认主页为Default.aspx,在Default.aspx页面上依次添加一个TextBox控件(ID=TextBoxl)、一个 Button 控件(ID=Buttonl OnClick=\"btnAdd_Click\" Text =添加”)。
(2)设计数据库。 建立一个名为DB_1的数据库.建立表flower.建立两个字段,第一个宇段名为ID,数椐类型为int,标识规范选择“是”。第二个字段名为FlowerName,数据类型为varchar(50)。
(3)编写Web.Config文件中的连接字符串。 value=”Server=localhost;Initial
Catalog=DB_l;
UID=sa;
PWD=123456;”/>
(4)获取连接字符串。
在Default.aspx页中,使用ConfigurationManager类获取配置节的连接字符串,代码如下: public SqlConnection GetConnection () {
string myStr=ConfigurationManager.AppSettings [“SQLDB”]; //建立Connection对象调用连接字符串myStr
SqlConnection myConn=new SqlConnection (myStr); return myConn; }
(5)编写添加按钮亊件。 在添加按钮的Click事件下,使用Command对象将文本框中的值添加到数据库中,并将其显示出来,代码如下。
protected void btnAdd_Click (object sender, EventArgs e) (
i f(this.txtName.Text ! =””> (
SqlConnection myConn-GetConnection (); myConn.Open ();
string sqlStr insert into flower (FlowerName ) values ( , \" + this. TextBox1.Text.Trim() + “‟)”; SqlConunand myCmd=new SqlCommand (sqlStr, myConn); myCmd.ExecuteNonQuery(); myConn.Close () ;
Response.Writer(”); } else
Response.Write(\"\"); }
第11章习题与练习
1. 填空题 1) 用户程序 2) 向上
3) Exception ApplicationException 2. 选择题
DCBAB 3.操作题
namespace arrayNum1 {
class Program {
static void Main(string[] args) {
int n = 10; try {
int[] employee = new int[10];
for (int i = 1; i <= n; i++) {
employee[i - 1] = i;
Console.WriteLine(\"第{0}个员工学号为:\" + employee[11], i);
} }
catch (DivideByZeroException e) {
Console.WriteLine(\"输入错误分母不能\" + e.ToString()); }
catch (IndexOutOfRangeException e) {
Console.WriteLine(\"输入错误,数组越界!\" + e.ToString()); }
catch (Exception e) {
Console.WriteLine(\"出现其它异常\" + e.ToString()); }
finally {
Console.ReadLine(); } } } }
第12章习题与练习
见网上下载资源