SQL后台代码:
create table tbGuestBook
(
Userid int identity(1,1) primary key,
UserName varchar(50) not null,
PostTime Datetime not null,
UserMessage varchar(400),
IsReplied bit not null,
Reply varchar(400)
)
insert into tbGuestBook values('admin','2007-1-1','hello',0,'hehe')
insert into tbGuestBook values('guest','2008-1-1','hello',0,'hehe')
html:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript">
</script>
<script type="text/javascript">
// var control = document.getElementById("<%=txtName.ClientID%>");
function ShowReplyBox(obj) {
var tab = $(obj).parents("table");
tab.find("#lblReply").css("display", "none");
tab.find("textarea").css("display", "block");
tab.find("#PCommand").css("display", "block");
}
function Cancel(obj) {
var tab = $(obj).parents("table");
tab.find("#lblReply").css("display", "block");
tab.find("textarea").css("display", "none");
tab.find("#PCommand").css("display", "none");
}
function ShowCommand(obj) {
var tab = $("label #lblCommand").css("display", obj);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style="width: 100%" align="center">
<h2>
留言板</h2>
<textarea id="txtMessage" runat="server" style="width: 600px; height: 200px"></textarea>
<table style="width: 600px" cellpadding="0" cellspacing="0">
<tr>
<td align="left">
姓名<input type="text" runat="server" id="txtName" />
</td>
<td align="right" style="width:80px">
<input id="btnMessage" runat="server"
type="button" value="发表留言" onserverclick="btnMessage_onclick" />
</td>
</tr>
</table>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<table style="width: 600px; font-size: 20px;" cellspacing="0" cellpadding="0">
<tr>
<td align="right">
<div style="text-align:left"> <%#Eval("UserName").ToString() == ""?"匿名":Eval("UserName")%></div> <%#Eval("PostTime")%>
<label id="lblCommand" >
<label οnclick="ShowReplyBox(this)" οnmοuseοver="this.style.cursor='hand'">
<%#Eval("IsReplied").ToString()=="False"?"回复":"修改" %></label>
<asp:LinkButton runat="server" ID="lbtnDel" Text="删除" CommandArgument='<%#Eval("Userid") %>' OnClick="lbtnDel_Click"></asp:LinkButton>
</label>
</td>
</tr>
<tr>
<td align="center">
<%#Eval("UserMessage")%>
</td>
</tr>
<tr>
<td>
<hr />
<table style="width: 100%; height: 100%;">
<tr>
<td style="width: 80px" align="center">
<h3> 管理员回复:</h3>
</td>
<td>
<label id="lblReply">
<%#Eval("IsReplied").ToString() == "False" ? "暂无回复!" : Eval("Reply")%></label>
<textarea style="display:none" id="txtReply" cols="56" rows="20" runat="server"><%#Eval("Reply") %></textarea>
<p id="PCommand" style="display:none">
<asp:Button runat="server" ID="btnReply" Text="回复" CommandArgument='<%#Eval("Userid")%>' OnClick="btnReply_Click"/>
<input type="button" value="取消" οnclick="Cancel(this)" /></p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
后台代码:
public partial class Message : System.Web.UI.Page
{
GuestBookDataContext dct = new GuestBookDataContext();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Page.ClientScript.RegisterStartupScript(this.GetType(), "sd", "ShowCommand('block')", true);
Page.ClientScript.RegisterStartupScript(this.GetType(), "sd", "ShowCommand('none')", true);
Bind();
}
}
public void Bind()
{
var q = from p in dct.tbGuestBook orderby p.PostTime descending select p;
Repeater1.DataSource = q;
Repeater1.DataBind();
}
protected void btnMessage_onclick(object sender, EventArgs e)
{
tbGuestBook ms = new tbGuestBook()
{
UserName=txtName.Value,
PostTime=DateTime.Now,
IsReplied=false,
UserMessage=txtMessage.Value,
Reply=null
};
dct.tbGuestBook.InsertOnSubmit(ms);
dct.SubmitChanges();
Bind();
}
protected void lbtnDel_Click(object sender,EventArgs e)
{
LinkButton lb = sender as LinkButton;
int id = Convert.ToInt32(lb.CommandArgument);
tbGuestBook ms = dct.tbGuestBook.Where(w => w.Userid == id).First();
dct.tbGuestBook.DeleteOnSubmit(ms);
dct.SubmitChanges();
Bind();
}
protected void btnReply_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
int id = Convert.ToInt32(btn.CommandArgument);
//tbGuestBook ms = (from p in dct.tbGuestBook where p.Userid == id select p).First();
tbGuestBook ms = dct.tbGuestBook.Where(w => w.Userid == id).First();
ms.IsReplied = true;
ms.Reply = (btn.Parent.FindControl("txtReply") as HtmlTextArea).Value;
dct.SubmitChanges();
Bind();
}
}