📄 chatroom.aspx.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace book09
{
//
/// <summary>
/// ChatRoom 的摘要说明。
/// </summary>
public partial class ChatRoom : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
//注册Ajax类型
Ajax.Utility.RegisterTypeForAjax(typeof(ChatRoom));
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
#endregion
public string UserName
{
get
{
return User.Identity.Name;
}
}
/// <summary>
/// 获取新消息的html字符串
/// </summary>
/// <returns>客户端输出的html字符串</returns>
[Ajax.AjaxMethod()]
public string GetNewMsgString()
{
string strMsgHTML = "";
SqlConnection conn = new SqlConnection(
ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetNewMsg";
cmd.Parameters.Add("@username", UserName);
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
if (dr.GetString(1) != "")
{
strMsgHTML += string.Format(
"<span class='chatmsg' style='COLOR: #{0}'>{1} {2} {3} {4} >> {5}</span><br>",
dr.GetString(5),
dr.GetString(1),
TestIsPublic(dr.GetBoolean(6)),
TestYourself(dr.GetString(2)),
dr.GetString(4),
Replace_GTLT(dr.GetString(3)));
}
else
{
strMsgHTML += string.Format(
"<span class='chatmsg' style='COLOR: #{0}'>{1}</span><br>",
dr.GetString(5),
dr.GetString(3));
}
}
}
conn.Close();
SetMsgPos();
return strMsgHTML;
}
/// <summary>
/// 替换字符串中的'<','>'字符
/// </summary>
/// <param name="strInput">输入字符串</param>
/// <returns>替换后的字符串</returns>
private string Replace_GTLT(string strInput)
{
string strOutput = strInput.Replace("<", "<");
strOutput = strOutput.Replace(">", ">");
return strOutput;
}
/// <summary>
/// 检查用户名是否是当前登录的用户名
/// </summary>
/// <param name="strInput">用户名</param>
/// <returns>经过替换的用户名</returns>
private string TestYourself(string strInput)
{
if (strInput == UserName)
return "你";
else
return strInput;
}
private string TestIsPublic(bool IsPublic)
{
if (IsPublic)
return "对";
else
return "悄悄地对";
}
/// <summary>
/// 记录已经阅读过的消息id
/// </summary>
private void SetMsgPos()
{
SqlConnection conn = new SqlConnection(
ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SetMsgPos";
cmd.Parameters.Add("@username", UserName);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
[Ajax.AjaxMethod()]
public void SendMsg(string strMsg, string strUserTo, string strColor, string strExpression, bool bIsPublic)
{
SqlConnection conn = new SqlConnection(
ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SendMsg";
cmd.Parameters.Add("@user_from", UserName);
cmd.Parameters.Add("@user_to", strUserTo);
cmd.Parameters.Add("@content", strMsg);
cmd.Parameters.Add("@expression", strExpression);
cmd.Parameters.Add("@color", strColor);
cmd.Parameters.Add("@ispublic", bIsPublic);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
[Ajax.AjaxMethod()]
public string GetOnlineUserString()
{
string strUserlist = "";
SqlConnection conn = new SqlConnection(
ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetOnlineUsers";
conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
strUserlist += dr.GetString(1) + ",";
}
}
conn.Close();
return strUserlist.TrimEnd(',');
}
[Ajax.AjaxMethod()]
public void Logout()
{
SqlConnection conn = new SqlConnection(
ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "UserLogout";
cmd.Parameters.Add("@username", UserName);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
//FormsAuthentication.SignOut();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -