Panelrunat="server"/>
Blue.css文件的代码如下:
#login
{
background-image:
url(../images/3.jpg);
color:
White;
}
#msg
{
background-image:
url(../images/3.jpg);
color:
White;
}
b)编写程序代码
切换到Default.aspx的源视图,在@Page指令中添加对默认主题的引用:
<%@PageLanguage="C#"…StylesheetTheme="Default"%>
双击页面空白区域,切换到Default.aspx.cs的代码编辑窗口,在窗口中输入如下代码。
页面装入时执行的事件代码如下:
protectedvoidPage_PreInit()
//Page_PerInit事件发生在Page_Load事件之前,此时StyleSheetTheme属性值尚未应用
{
//获取由“?
”传递来的变量值,并赋给页面(this)的Theme属性。
//页面@Page指令中设置的StyleSheetTheme属性值将被Theme属性覆盖this.Theme=Request.QueryString["NewTheme"];
}
ii.登录功能实现方法:
登录用户信息存放在Access数据库ad.accdb的User表中,包括Uno、Uname、Upart、Uphone、Usex、Upass和Ulevel7个字段,分别用于存放员工号、姓名、部门、电话、性别、密码、用户级别。
如图2所示。
图2User表的内容
编写程序代码
切换到Default.apsx的代码窗口编写事件处理代码。
由于登录用到了数据库连接与访问的对象,因此在代码区最上方添加对相应命名空间的引用。
usingSystem.Data.OleDb;
usingSystem.Data.SqlClient;
页面装入时执行的事件代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Title="通讯录查询系统登录";
TUser.Focus();
}
“登录”按钮被单击时执行的事件代码如下:
protectedvoidBLogin_Click(objectsender,EventArgse)
{
//将文本框中输入的信息存放在下面的字符串当中
stringusername=TUser.Text;
stringpassword=TPass.Text;
//连接语句
stringstr="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+
Server.MapPath("App_Data/ad.accdb");
OleDbConnectionConn=newOleDbConnection(str);
Conn.Open();
OleDbCommandcmd=Conn.CreateCommand();
//输入SQL语句
cmd.CommandText="SELECT*FROM[User]WHEREUname=username";
cmd.Parameters.Add(newOleDbParameter("@Uname",username));
OleDbDataReaderreader=cmd.ExecuteReader();
//判断用户名是否合法
if(reader.Read()==true)
{
//读取该用户名的密码信息与用户级别信息
stringpwd=reader.GetString(reader.GetOrdinal("Upass"));
stringlel=reader.GetString(reader.GetOrdinal("Ulevel"));
if(pwd==password)
{
//密码合法时将用户密码确认信息与用户级别信息存入session中
Session["pass"]="yes";
Session["Level"]=lel;
//跳转到通讯管理界面
Response.Redirect("./Txgl.aspx");
Conn.Close();
}
else
{
//密码错误时对话框提醒信息
Response.Write("alert('密码错误')
");
TPass.Text="";
return;
}
}
else
{
//用户名不存在时对话框信息
Response.Write("alert('用户名错误')
");
TUser.Text="";
TPass.Text="";
return;
}
“注册”按钮被单击时执行的事件代码如下:
protectedvoidBSign_Click(objectsender,EventArgse)
{
Response.Redirect("./Sign.aspx");
}
二、设计注册界面(Sign.aspx)
1)设计Web页面
在网站中添加一个新的Web窗体,在页面中添加1个用于布局的HTML表格。
如图3所示,在页面中添加必要的文字说明。
添加4个TextBox控件TextBox1~TextBox4;添加1个下拉列表DropDownList控件;1个RadioButtonList控件;1个按钮控件Button1。
5个必须项验证控件RequireField1~RequireField5;2个正则表达式验证控件RegularExpressValidator1;1个比较验证控件CompareValidator。
图3Sign.aspx界面设计
2)设置对象属性
用户名、手机号、密码、确认密码后的TextBox的ID属性分别设置为Uname、UPhone、Upass、Uconfirm。
Upass、Uconfirm的TextMode属性都设为Password。
Button按钮的ID属性设为SignOK,Text属性设为注册。
验证控件的属性值设置情况见表2。
表2各控件对象的属性设置
控件ID
属性
属性值
RequiredFieldValidator1
ControlToValidate
Uname
ForeColor
Red
Text
*请您输入用户名
RequiredFieldValidator2
ControlToValidate
DropDownList1
ForeColor
Red
Text
*请您选择部门
InitialValue
-选择部门-
控件ID
属性
属性值
RequiredFieldValidator3
ControlToValidate
Uphone
ForeColor
Red
Text
*请您输入手机号
Display
Dynamic
RequiredFieldValidator4
ControlToValidate
Upass
ForeColor
Red
Text
*请输入密码
Display
Dynamic
RequiredFieldValidator5
ControlToValidate
UConfirm
ForeColor
Red
Text
*请输入密码
Display
Dynamic
RegularExpressionValidator1
ControlToValidate
UConfirm
ForeColor
Red
Text
*密码长度为6~12位
Display
Dynamic
ValidationExpression
\d{6,12}
RegularExpressionValidator2
ControlToValidate
Uphone
ForeColor
Red
Text
*号码格式不正确
Display
Dynamic
ValidationExpression
\d{5,11}
CompareValidator1
ControlToValidate
UConfirm
ControlToCompare
Upass
ForeColor
Red
Text
*两次密码输入不一致
Display
Dynamic
说明:
DropdownList1的Items中添加成员“-选择部门-”。
RadioButtonList1的Items中添加成员“男”和“女”,成员“男”的Selected属性为True,使页面加载时按钮默认选择“男”。
RequiredFieldValidator2验证控件中的InitialValue属性设置返回内容的初始值为“-选择部门-”,用来验证是否选择了部门。
3)编写程序代码
引用需要的命名空间。
代码如下:
usingSystem.Data.OleDb;
usingSystem.Data.SqlClient;
页面装入时执行的代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Title="通讯录查询注册页面";
if(!
IsPostBack)
{
//页面初次加载时,下拉列表框中添加的项
DropDownList1.Items.Add("生活部");
DropDownList1.Items.Add("宣传部");
DropDownList1.Items.Add("人事部");
DropDownList1.Items.Add("办公室");
DropDownList1.Items.Add("服务部");
}
Uname.Focus();
}
“注册”按钮被单击时执行的事件代码如下:
protectedvoidSignOK_Click(objectsender,EventArgse)
{
stringusername=Uname.Text;
stringpart=DropDownList1.SelectedValue.ToString();
stringphone=Uphone.Text;
stringsex=RadioButtonList1.SelectedValue.ToString();
stringpass=UPass.Text;
stringstr="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+
Server.MapPath("App_Data/ad.accdb");
OleDbConnectionConn=newOleDbConnection(str);
Conn.Open();
OleDbCommandcmd=Conn.CreateCommand();
//默认传递的用户级别为2,即普通用户。
cmd.CommandText="INSERTINTO[User](Uname,Upart,Uphone,Usex,
Upass,Ulevel)VALUES(@username,@part,@phone,@sex,@pass,2)";
cmd.Parameters.Add(newOleDbParameter("@username",username));
cmd.Parameters.Add(newOleDbParameter("@@part",part));
cmd.Parameters.Add(newOleDbParameter("@phone",phone));
cmd.Parameters.Add(newOleDbParameter("@sex",sex));
cmd.Parameters.Add(newOleDbParameter("@pass",pass));
cmd.ExecuteNonQuery();
Response.Write("alert('注册成功|');
window.location='Default.aspx';");
}
三、设计通讯录管理查询界面(Txgl.aspx)
1)设计Web页面
在网站中添加一个新的Web窗体。
向其中添加必要的文字说明。
添加1个下拉列表框DropDownList1,1个文本框控件TextBox。
3个按钮控件Button1~Button3。
2个用于显示数据库的数据的GridView1(普通用户可见)、FormView1(管理员用户可见)和4个AccessDataSource1~AccessDataSource4控件,分别用于按员工号、姓名、部门查询记录的情况。
用于实现局部更新AJAX技术的1个SciptManager1控件和1个UpdatePanel1控件。
如图4所示。
图4Txgl.aspx界面设计
2)设置对象属性
设置文本框TextBox的ID属性为Query,设置按钮控件Button1~Button3的ID属性分别为ButtonQuery、ButtonALL、ButtonExit。
Text属性分别为“查询”、“显示全部”、“退出”。
选中AccessDataSource1,在其任务菜单中执行“配置数据源”命令,在打开的对话框中单击“浏览”按钮,选择事先已存放在网站App_Data文件夹中的ad.accdb文件。
在“配置Select语句”对话框中选择“指定自定义SQL语句或存储过程”。
单击“下一步”按钮,在打开的对话框,输入如下所示的SQL语句。
SELECT*FROM[User]WHERE([Uno]=?
)
单击“下一步”按钮,在打开的对话框中设置查询条件为Uno列的数据等于Query的Text属性值。
AccessDataSource2和AccessDataSource3的设置与前面1的设置基本相同,只是在设置WHERE子句时设置的查询条件不同,具体设置如图4和图5所示。
为了使程序支持“模糊查询”,在按姓名、部门查询时使用了LIKE运算符。
图5按姓名查询的WHERE子句设置
图6按班级查询的WHERE子句设置
AccessDataSource4的设置,去掉了WHERE子句部分。
无条件返回所有记录。
说明:
GridView和FormView控件都统一放在UpdatePanel内用于实现AJAX的局部更新。
3)编写程序代码
为了在GridView控件中显示中文的列表题,需要切换到Txgl.aspx页面的源视图,按如下所示修改GridView1控件中的描述代码。
GridViewID="GridView1"runat="server"AutoGenerateColumns="False">
BoundFieldDataField="Uno"HeaderText="员工号"/>
BoundFieldDataField="Uname"HeaderText="姓名"/>
BoundFieldDataField="Usex"HeaderText="性别"/>
BoundFieldDataField="Upart"HeaderText="部门"/>
BoundFieldDataField="Uphone"HeaderText="电话"/>
GridView>
页面装入时执行的事件代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
{
//先将数据表显示控件设置为不可见
GridView1.Visible=false;
FormView1.Visible=false;
//判断登陆界面的状态管理Session信息
if((string)(Session["pass"])!
="yes")
{
//禁止非法用户直接输入通讯管理界面网址来到界面Response.Write("alert('直接来到这里可是非常
没礼貌的行为呦!
')");
Server.Transfer("Default.aspx");
}
else
{
this.Title="欢迎使用通讯录查询系统";
//判断用户级别信息,用于显示不同的表界面。
if((string)(Session["Level"])=="1")
{
FormView1.Visible=true;
GridView1.DataSource=user;
GridView1.DataBind();