在整理以前资料时偶尔发现有一个效果不错的Ajax留言板程序,是以前一个系统的一个部分。今天抽了点时间,将其独立成一个项目,与大家分享下,先来看下具体的效果图:
思路很简单,就是一般的Ajax系统,主要是里面的一些jQuery的特效确实不错。下面是实现步骤:
环境:Visual Studio 2010 + SQL Server 2008 + jQuery1.4.1
1. 首先设计数据库,很简单,留言人、留言时间、留言内容、头像等字段,具体的数据库表创建语句如下
CREATE
TABLE
[
dbo
]
.
[
tb_message_board
]
(
[
MSG_ID
]
[
int
]
IDENTITY
(
1
,
1
)
NOT
NULL
,
[
MSG_USER
]
[
nchar
]
(
20
)
NULL
,
[
MSG_FACE
]
[
nchar
]
(
50
)
NULL
,
[
MSG_CONTENT
]
[
nchar
]
(
100
)
NULL
,
[
MSG_TIME
]
[
datetime
]
NULL
)
ON
[
PRIMARY
]
大家可以在自己机器上执行该SQL ,你项目的数据库,同时要修改Web.config中的数据库名;
2. 创建ASP.NET 应用程序,默认已经有母版页了,我们只要添加一个使用了默认母版页的Web页面,取名为MessageBoard;
3. 创建一些常用的文件夹,如images文件夹,用来存放项目中使用的图片,我这边最后创建后的解决方案管理器如下图:
4. 使用div 及css 布局你的留言板页面,我之前参考了http://www.css88.com/demo/ajax-deleet 中的布局;
5. 当初为了方便起见,使用了最基础的SQL Helper作为数据操作类,下面是该 SQL Helper类的代码:
6. 创建数据库对象的实体类,也是十分简单的,就是对应数据库的字段;
/*
* 文件名:Message
* 说明:Message实体类
* 作者:Alexis
* 网站:
http://www.cnblogs.com/alexis
* 创建时间:20100428
*
*/
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
namespace
MessageBoard
{
///
<summary>
///
留言类
///
</summary>
public
class
Message
{
private
int
id;
//
留言的标识
public
int
Id
{
get
{
return
id; }
set
{ id
=
value; }
}
private
string
msg_content;
//
留言的内容
public
string
Msg_content
{
get
{
return
msg_content; }
set
{ msg_content
=
value; }
}
private
string
msg_nickname;
//
昵称
public
string
Msg_nickname
{
get
{
return
msg_nickname; }
set
{ msg_nickname
=
value; }
}
private
string
msg_face;
//
选择的头像
public
string
Msg_face
{
get
{
return
msg_face; }
set
{ msg_face
=
value; }
}
private
DateTime msg_time;
//
留言的时间
public
DateTime Msg_time
{
get
{
return
msg_time; }
set
{ msg_time
=
value; }
}
}
}
7.开始着手写js代码,在写ajax事件之前,先来看下两个jQuery插件,首先是jQuery文本框水印效果,效果图如下:
使用方法:添加watermarkinput 的js引用,为想要实现水印效果的文本框加上id如,
<input type="text" id="msg_nickname" size="40" /> 之后再js代码中写如下的代码以处理水印
//处理水印
jQuery(function ($) {
$("#msg_nickname").Watermark("请输入您的昵称,如果不输入则默认为匿名");
});
function UseData() {
$.Watermark.HideAll(); //Do Stuff
$.Watermark.ShowAll();
}
8. jQuery图片缩放插件,
jquery.imgzoom.js
,具体的效果:点击图标的时候,图片渐渐变大,直至原来的大小,如果是Gif图片的话,效果会更好。
9. 编写具体的Ajax代码,使用jQuery框架将会节省很多的时间,当我们点击留言按钮的时候,将一些信息收集起来,然后通过Ajax写入数据库,然后使用布局修改DOM来实现无刷新的效果,主要的代码如下:
//
使用ajax处理留言
$.ajax({
type:
"
POST
"
,
url:
"
Ajax/MessageBoardHandler.ashx?action=add
"
,
data:
"
msg_nickname=
"
+
escape(msg_nickname)
+
"
&msg_content=
"
+
escape(msg_content)
+
"
&msg_time=
"
+
msg_time
+
"
&msg_face=
"
+
msg_face,
success:
function
(msg) {
//
在table中新增一行
if
(msg
==
"
success
"
) {
$(
'
#messagelist
'
).append(
"
<div class='box clearfix' id=''><img src='
"
+
msg_face
+
"
' alt='' width='50' height='50' class='avatar' /><div class='text'><strong><a href='#'>
"
+
msg_nickname
+
"
</a></strong><p>
"
+
msg_content
+
"
</p><div class='date'>
"
+
msg_time
+
"
</div></div></div>
"
);
}
}
});
上面的一些变量重字面上也能知道是我们收集的信息,即要写如数据库的留言信息;
10. 编写Ajax处理类的代码,将信息插入数据库,代码如下:
在这个类里面就用到了SQL Helper了;
11. 编写MessageBoard的后台代码,我们在加载留言本页面的时候,需要将已有的留言信息显示在页面中,
/*
* 文件名:MessageBoard
* 说明:使用Ajax的留言板
* 作者:Alexis
* 网站:
http://www.cnblogs.com/alexis
* 创建时间:20101226
*
*/
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data.SqlClient;
using
System.Data;
namespace
MessageBoard
{
public
partial
class
MessageBoard : System.Web.UI.Page
{
protected
DataTable dt;
protected
void
Page_Load(
object
sender, EventArgs e)
{
GetMessage();
}
//
从数据库中读取留言信息
protected
void
GetMessage()
{
SQLHelper helper
=
new
SQLHelper();
dt
=
helper.getDataTable(
"
select * from tb_message_board
"
);
}
}
}
12. 在前台显示这些数据,使用的内部变量,即 <%=dt.Rows[i]["msg_time"]%>这种形式的代码,详细的代码可以参考源文件