21.9 聊天室管理界面
在聊天室管理界面模块中,管理员能够对系统中的聊天室进行智能管理,包括添加、删除和修改等操作。此模块的实现也是基于数据库的,即利用数据库这个中间媒介实现对信息的管理和维护工作。
聊天室管理界面的实现文件如下。
- Default.aspx。
- Default.aspx.cs。
- LiaoManage.aspx。
- LiaoManage.aspx.cs。
- UpdateLiao.aspx。
- UpdateLiao.aspx.cs。
本节将详细讲解实现上述文件的过程。
21.9.1 聊天室添加模块
聊天室添加模块的功能是向系统中添加新的聊天室信息。该功能的实现文件如下。
- AddLiao.aspx:添加表单界面文件。
- AddLiao.aspx.cs:添加处理文件。
下面将对上述文件的实现过程进行详细介绍。
1.添加表单界面文件
添加表单界面文件AddLiao.aspx的功能是提供单相片上传表单,供用户选择上传相片文件。其具体实现过程如下。
(1)插入1个TextBox控件,供用户输入聊天室的名称。
(2)插入1个RequiredFieldValidator控件,用于验证输入名称的合法性。
(3)调用2个Ajax程序集中的TextBoxWatermark控件,实现水印验证提示。
(4)调用1个Ajax程序集中的ValidatorCalloutExtender控件,实现多样式验证。
(5)插入1个TextBox控件,供用户输入聊天室允许的最大在线人数。
(6)插入1个RegularExpressionValidator控件,用于对输入人数的验证。
(7)调用1个Ajax程序集中的TextBoxWatermark控件,实现水印验证提示。
(8)调用1个Ajax程序集中的ValidatorCalloutExtender控件,实现多样式验证。
(9)插入1个TextBox控件,供用户输入聊天室的简介。
(10)分别使用CustomValidator控件、TextBoxWatermark控件和ValidatorCallout控件,对用户输入的简介信息进行验证。
(11)插入1个DropDownList控件,供用户设置聊天室的状态。
(12)插入2个Button控件,供用户激活添加处理程序。
(13)定义函数MessageValidator(source,argument),用于设置用户输入的简介信息字符小于800大于10。
2.聊天室添加处理文件
聊天室添加处理文件AddLiao.aspx.cs的功能是验证表单的数据,并将合法的数据添加到系统库中。其具体实现过程如下。
(1)引入命名空间,定义AddChat类。
(2)声明Page_Load,页面初始化处理。
(3)定义btnCommit_Click(object sender,EventArgs e),然后对验证码进行验证。
(4)添加合法的表单数据到数据库。
(5)重定向返回管理列表界面。
(6)定义btnClear_Click(object sender,EventArgs e),清空列表数据。
上述操作实现的运行流程如图21-9所示。
图21-9 聊天室添加处理运行流程图
文件AddLiao.aspx.cs的具体实现代码如下。
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入新的命名空间
using ASPNETAJAXWeb.AjaxChat;
using ASPNETAJAXWeb.ValidateCode.Page;
public partial class AddChat : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnCommit_Click(object sender,EventArgs e)
{
if(Session[ValidateCode.VALIDATECODEKEY] != null)
{ //验证验证码是否相等
if(tbCode.Text != Session[ValidateCode.VALIDATECODEKEY].ToString())
{
lbMessage.Text = "验证码输入错误,请重新输入";
return;
}
Chat chat = new Chat();
//添加新的聊天室
if(chat.AddLiaotian(tbName.Text,Int32.Parse(tbMaxNumber.Text),byte.Parse(ddlStatus.SelectedValue),tbRemark.Text) > 0)
{//重定向到管理列表页面
Response.Redirect("~/LiaoManage.aspx");
}
}
}
protected void btnClear_Click(object sender,EventArgs e)
{
tbRemark.Text = string.Empty;
}
}
21.9.2 聊天室列表模块
聊天室列表模块的功能是将系统内的聊天室信息以列表样式显示出来,并提供聊天室的删除和修改操作链接。上述功能的实现文件如下。
- LiaoManage.aspx:聊天室列表文件。
- LiaoManage.aspx.cs:聊天室列表处理文件。
下面将对上述功能的实现过程进行详细介绍。
1.聊天室列表文件
聊天室列表文件LiaoManage.aspx的功能是以列表的样式将系统内的聊天室信息显示出来。其具体实现过程如下。
(1)插入1个GridView控件,用于以列表样式显示系统聊天室信息。
(2)通过GridView控件,设置分页显示聊天室信息数为20。
(3)通过<%# Eval("ID") %>,获取聊天室的编号参数;通过<%# Eval("ChatName") %>,获取聊天室的名字。
(4)插入2个ImageButton控件,分别作为聊天室的删除和管理链接。
(5)插入1个Button控件,用于激活聊天室添加模块。
2.聊天室列表处理文件
聊天室列表处理文件LiaoManage.aspx.cs的功能是根据用户列表界面的操作执行对应的处理程序。其具体实现过程如下。
(1)引入命名空间,定义ChatManage类。
(2)声明Page_Load,页面初始化处理。
(3)定义函数BindPageData(),获取并显示系统聊天室数据。
(4)定义函数btnAdd_Click(object sender,EventArgs e),执行添加重定向处理。
(5)定义函数gvChat_RowDataBound(object sender,GridViewRowEventArgs e),弹出删除确认对话框。
(6)定义函数vChat_RowCommand(object sender, GridViewCommandEventArgs e),执行处理程序。
(7)如果激活修改事件,则重定向修改界面;如果激活删除事件,则执行删除处理。
上述操作实现的具体运行流程如图21-10所示。
图21-10 聊天室列表处理运行流程图
文件LiaoManage.aspx.cs的具体实现代码如下。
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入新的命名空间
using ASPNETAJAXWeb.AjaxChat;
public partial class ChatManage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
BindPageData();
}
}
private void BindPageData()
{ //获取聊天室数据
Chat chat = new Chat();
DataSet ds = chat.GetLiaotian();
//显示聊天室数据
gvChat.DataSource = ds;
gvChat.DataBind();
}
protected void btnAdd_Click(object sender,EventArgs e)
{
Response.Redirect("~/AddLiao.aspx");
}
protected void gvChat_RowDataBound(object sender,GridViewRowEventArgs e)
{ //添加/删除时的确认对话框
ImageButton imgDelete = (ImageButton)e.Row.FindControl("imgDelete");
if(imgDelete != null)
{
imgDelete.Attributes.Add("onclick","return confirm('您确认要删除当前行的聊天室吗?');");
}
}
protected void gvChat_PageIndexChanging(object sender,GridViewPageEventArgs e)
{ //重新设置新页码
gvChat.PageIndex = e.NewPageIndex;
BindPageData();
}
protected void gvChat_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.ToLower() == "update")
{ //重定向到修改页面
Response.Redirect("~/UpdateLiao.aspx?ChatID="+e.CommandArgument.ToString());
return;
}
if (e.CommandName.ToLower() == "del")
{ //删除聊天室,并重新显示数据
Chat chat = new Chat();
if (chat.DeleteLiaotian(Int32.Parse(e.CommandArgument.ToString())) > 0)
{
BindPageData();
}
return;
}
}
}
21.9.3 聊天室修改模块
聊天室修改模块的功能是对系统内某聊天室的信息进行修改。上述功能的实现文件如下。
- UpdateLiao.aspx:聊天室列修改表单界面。
- UpdateLiao.aspx.cs:聊天室修改处理文件。
1.聊天室列修改表单界面
聊天室列修改表单界面文件UpdateLiao.aspx的功能是将指定编号的聊天室信息在表单内显示出来,并通过表单获取用户输入的修改数据。其具体实现过程如下。
(1)插入1个TextBox控件,显示原聊天室的名称,并供用户输入修改数据。
(2)插入1个RequiredFieldValidator控件,用于验证输入名称的合法性。
(3)调用2个Ajax程序集中的TextBoxWatermark控件,实现水印验证提示。
(4)调用1个Ajax程序集中的ValidatorCallout控件,实现多样式验证。
(5)插入1个TextBox控件,显示原聊天室允许的最大在线人数,并输入修改后的人数。
(6)插入1个RegularExpressionValidator控件,用于对输入人数的验证。
(7)调用1个Ajax程序集中的TextBoxWatermark控件,实现水印验证提示。
(8)调用1个Ajax程序集中的ValidatorCalloutExtender控件,实现多样式验证。
(9)插入1个TextBox控件,显示原聊天室的简介信息,并供用户输入修改信息。
(10)分别使用CustomValidator控件、TextBoxWatermark控件和ValidatorCallout控件,对用户输入的简介信息进行验证。
(11)插入1个DropDownList控件,供用户设置聊天室的状态。
(12)插入2个Button控件,供用户激活添加处理程序。
(13)定义函数MessageValidator(source,argument),设置用户输入的简介信息字符小于800大于10。
2.聊天室修改处理文件
聊天室修改处理文件UpdateLiao.aspx.cs的功能是将获取的修改表单数据在系统数据库中进行更新处理。其具体实现过程如下。
(1)引入命名空间,定义UpdateLiaotian类。
(2)获取修改聊天室的ID编号。
(3)声明Page_Load,页面初始化处理。
(4)显示此聊天室的原始数据。
(5)验证码验证处理。
(6)根据表单数据对系统数据库中的此编号聊天室信息进行更新处理。
(7)重定向返回管理列表界面。
(8)定义Clear_Click(object sender,EventArgs e),清空列表数据。
上述功能实现的具体运行流程如图21-11所示。
图21-11 聊天室修改处理流程图
文件UpdateLiao.aspx.cs的具体实现代码如下。
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入新的命名空间
using ASPNETAJAXWeb.AjaxChat;
using ASPNETAJAXWeb.ValidateCode.Page;
using System.Data.SqlClient;
public partial class UpdateLiaotian : System.Web.UI.Page
{
int chatID = −1;
protected void Page_Load(object sender, EventArgs e)
{ //获取被修改数据的ID值
if(Request.Params["ChatID"] != null)
{
chatID = Int32.Parse(Request.Params["ChatID"].ToString());
}
if(!Page.IsPostBack && chatID > 0)
{ //显示数据
BindPageData(chatID);
}
//设置提交按钮是否可用
btnCommit.Enabled = chatID > 0 ? true : false;
}
private void BindPageData(int chatID)
{ //获取聊天室的信息
Chat chat = new Chat();
SqlDataReader dr = chat.GetSingleLiaotian(chatID);
if(dr == null) return;
if(dr.Read())
{ //读取并显示聊天室的信息
tbName.Text = dr["ChatName"].ToString();
tbMaxNumber.Text = dr["MaxNumber"].ToString();
tbRemark.Text = dr["Remark"].ToString();
AjaxChatSystem.ListSelectedItemByValue(ddlStatus,dr["Status"].ToString());
}
dr.Close();
}
protected void btnCommit_Click(object sender,EventArgs e)
{
if(Session[ValidateCode.VALIDATECODEKEY] != null)
{ //验证验证码是否相等
if(tbCode.Text != Session[ValidateCode.VALIDATECODEKEY].ToString())
{
lbMessage.Text = "验证码输入错误,请重新输入";
return;
}
Chat chat = new Chat();
//修改聊天室的配置
if(chat.UpdateLiaotian(chatID,tbName.Text,Int32.Parse(tbMaxNumber.Text),byte.Parse(ddlStatus.SelectedValue),tbRemark. Text) > 0)
{ //重定向到管理页面
Response.Redirect("~/LiaoManage.aspx");
}
}
}
protected void btnClear_Click(object sender,EventArgs e)
{
tbRemark.Text = string.Empty;
}
}