Web程序设计实验指导书1116 下载本文

Text Botton Botton Botton Botton ID Text ID Text ID Text ID Text 2 btnThree 3 btnAdd + btnSubtract - btnEqual = “数字2”按钮上显示的文本 “数字3”按钮的编程名称 “数字3”按钮上显示的文本 “+”按钮的编程名称 “+”按钮上显示的文本 “-”按钮的编程名称 “-”按钮上显示的文本 “=”按钮的编程名称 “=”按钮上显示的文本 (3)编写事件、方法代码

在所有事件、方法外声明静态字段。静态字段保证了其中的数据可以在所有的事件、方法中被访问,并能在事件代码或方法代码执行结束后保留数据。其中,静态字段num1用于存储算式中的第一个数字字符串,初始值为“0”;num2用于存储算式中的第二个数字字符串,初始值为“0”;total用于存储将所有输入的数连接后的数字字符串,初始值为“”(空字符串);sign用于存储运算符号,初始值为“”。代码如下:

static string num1 = \按钮btnOne被单击时执行的事件代码如下: protected void btnOne_Click(object sender, EventArgs e) {

total += \ //将数字字符串\与total原值连接后再存入total txtDisplay.Text = total; }

按钮btnTwo被单击时执行的事件代码如下: protected void btnTwo_Click(object sender, EventArgs e) {

total += \

txtDisplay.Text = total; }

按钮btnThree被单击时执行的事件代码如下: protected void btnThree_Click(object sender, EventArgs e) {

total += \

txtDisplay.Text = total; }

按钮btnAdd被单击时执行的事件代码如下: protected void btnAdd_Click(object sender, EventArgs e) {

if (sign.Length == 1) //sign已存储运算符号 {

Count(); //调用Count()方法计算结果 num1 = txtDisplay.Text; sign = \ }

else //sign未存储运算符号

{

num1 = txtDisplay.Text; txtDisplay.Text = \ total = \ sign = \ } }

按钮btnSubtract被单击时执行的事件代码如下: protected void btnSubtract_Click(object sender, EventArgs e) {

if (sign.Length == 1) //sign已存储运算符号 {

Count(); //调用自定义方法Count()计算结果 num1 = txtDisplay.Text; sign = \ }

else //sign未存储运算符号 {

num1 = txtDisplay.Text; txtDisplay.Text = \ total = \ sign = \ } }

按钮btnEqual被单击时执行的事件代码如下: protected void btnEqual_Click(object sender, EventArgs e) {

Count(); //调用自定义方法Count()计算结果 }

///

/// 计算“num1 运算符 num2”的结果 ///

protected void Count() {

num2 = txtDisplay.Text;

if (num2 == \ //num2值为空字符串 {

num2 = \ }

switch (sign) //根据不同的运算符分别计算结果 {

case \

txtDisplay.Text = (int.Parse(num1) + int.Parse(num2)).ToString(); num1 = \

num2 = \ total = \ sign = \ break; case \

txtDisplay.Text = (int.Parse(num1) - int.Parse(num2)).ToString(); num1 = \ num2 = \ total = \ sign = \ break; } } }

(4)浏览建立的Web窗体进行测试。

2. 设计并实现一个用于查询教师课表的联动下拉列表框页面 (1)设计Web窗体

新建一个Web窗体,切换到设计视图。如图2-6所示,向页面输入“学年:”、“学期:”、“分院:”和“教师:”等信息,适当设置字体大小。再向页面添加4个DropDownList控件,适当调整个控件的大小和位置。

图2-6

(2)设置属性

Web窗体中各控件的属性设置如表2-2所示。

表2-1 各控件的属性设置表

控件 DropDownList DropDownList DropDownList DropDownList 属性名 ID AutoPostBack ID AutoPostBack ID AutoPostBack ID AutoPostBack (3)编写事件、方法代码

Web窗体首次载入时执行的代码如下:

protected void Page_Load(object sender, EventArgs e) {

//页面第一次载入,向各下拉列表填充值 if (!IsPostBack) {

BindYear(); BindTerm(); BindCollege(); BindTeacher();

属性值 ddlYear True ddlTerm True ddlCollege True True 说明 “学年”下拉列表框的编程名称 当列表项内容改变后,自动触发页面往返 “学期”下拉列表框的编程名称 当列表项内容改变后,自动触发页面往返 “分院”下拉列表框的编程名称 当列表项内容改变后,自动触发页面往返 当列表项内容改变后,自动触发页面往返 ddlTeacher “教师”下拉列表框的编程名称 } }

当“分院”下拉列表框中选择项改变时,触发的事件代码如下: protected void ddlCollege_SelectedIndexChanged(object sender, EventArgs e) {

BindTeacher(); }

自定义方法BingYear()的代码如下: protected void BindYear() {

//清空学年下拉列表中项 //向学年下拉列表添加项

for (int i = startYear; i <= currentYear; i++) {

ddlYear.Items.Add(new ListItem((i - 1).ToString() + \ }

//设置年份下拉列表默认项

ddlYear.SelectedValue = (currentYear - 1).ToString() + \ }

自定义方法BingTerm()的代码如下: protected void BindTerm() { d

//向学期下拉列表添加项 for (int i = 1; i <= 2; i++) { } }

自定义方法BingCollege()的代码如下: protected void BindCollege() { }

自定义方法BingTeacher()的代码如下: protected void BindTeacher() {

switch (ddlCollege.SelectedValue) //根据不同的分院产生不同的教师姓名 {

case \数学与信息工程学院\ //添加教师列表。在实际工程中,数据来源于数据库

break; case \外国语学院\ break; case \机电学院\ break;