文章教程

21.8聊天室显示界面

8/31/2020 9:56:04 PM 人评论 次浏览

在聊天室显示界面中,将列表显示系统的聊天房间,供用户选择进入感兴趣的聊天室。此模块的实现也是基于数据库的,即利用数据库这个中间媒介实现聊天室的显示。

聊天室显示界面的实现文件如下。

  • Default.aspx。
  • Default.aspx.cs。

本节将详细讲解实现上述两个文件的过程。

聊天室列表显示页面Default.aspx的功能是提供用户登录表单,供用户输入登录数据。其具体实现过程如下。

(1)插入1个DataList控件,设置其值为dlCha。

(2)在DataList控件中插入1个<ItemTemplate>模板。

(3)在<ItemTemplate>模板中插入1个HyperLink控件,用于以链接样式分别显示聊天室的名称,允许的最多在线人数,以及当前的在线人数。

(4)调用函数ComputerChatUserCount( ),计算聊天室的当前在线人数。

(5)调用Ajax程序集中的HoverMenuExtender控件,实现动态显示某聊天室当前在线用户列表。

聊天室列表处理文件Default.aspx.cs的功能是获取系统内的聊天室信息,并将获取的信息存储处理,供系统主界面显示使用。其具体实现过程如下。

(1)引入命名空间和声明Default类。

(2)通过Page_Load载入初始化处理。

(3)通过BindPageData()获取并显示聊天室的信息。

(4)定义函数FormatChatNumberStatus(int currentNumber,int maxNumber)。

(5)使用函数FormatChatNumberStatus计算聊天室的人数,并判断聊天室的状态。

(6)定义函数ComputerChatUserCount(int chatID)。

(7)使用函数ComputerChatUserCount(int chatID)计算聊天室的在线用户数。

(8)定义函数ShowUserData(ListBox list,int chatID)。

(9)使用函数ShowUserData(ListBox list,int chatID)显示聊天室的用户。

上述操作实现的具体运行流程如图21-8所示。

图21-8 聊天室列表处理页面显示处理运行流程图

文件Default.aspx.cs的具体实现代码如下。

using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//引入新的命名空间
using ASPNETAJAXWeb.AjaxChat;
using System.Collections.Generic;
public partial class Default : 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();
    //显示聊天室
    dlChat.DataSource = ds;
    dlChat.DataBind();
  }
  protected string FormatChatNumberStatus(int currentNumber,int maxNumber)
  {
    if(currentNumber >= maxNumber) return "已满";
    else return "未满";
  }
  protected void dlChat_ItemDataBound(object sender,DataListItemEventArgs e)
  { //找到显示用户列表的控件
    ListBox lbUser = (ListBox)e.Item.FindControl("lbUser");
    if(lbUser != null)
    {  //显示在线用户
      ShowUserData(lbUser,Int32.Parse(dlChat.DataKeys[e.Item.ItemIndex].ToString()));
    }
  }
  protected int ComputerChatUserCount(int chatID)
  { //获取聊天室的用户
    List<UserInfo> users = new List<UserInfo>();
    int count = 0;
    foreach(UserInfo ui in ASP.global_asax.Users)
    {
      if(ui.ChatID == chatID)
      {
        count++;
      }
    }
    return count;
  }
  private void ShowUserData(ListBox list,int chatID)
  { //获取聊天室的用户
    List<UserInfo> users = new List<UserInfo>();
    foreach(UserInfo ui in ASP.global_asax.Users)
    {
      if(ui.ChatID == chatID)
      {
        users.Add(ui);
      }
    }
    //显示聊天室的用户
    list.DataSource = users;
    list.DataValueField = "UserID";
    list.DataTextField = "Username";
    list.DataBind();
  }
}

教程类别