Her en en gæstebok som også sender dig en email når den kommer frem. Der er i fuld funktion på
www.iter.dk.Den demonstrerer både brug af databinding, email og database.
---------------guestbook.aspx----------------
<%@ Page debug="true" Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Web.Mail" %>
<%@ Register TagPrefix="iter" TagName="Header" src='controls/header.ascx' %>
<%@ Register TagPrefix="iter" TagName="Footer" src='controls/footer.ascx' %>
<script runat="server" >
string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnStr"];
void Page_Load(Object sender, EventArgs e) {
if(!Page.IsPostBack) {
phAddMessage.Visible=false;
repTags.Visible=true;
DataBind();
}
else {
phAddMessage.Visible=true;
}
}
void ShowAddMessage(Object sender, EventArgs e) {
repTags.Visible=false;
phAddMessage.Visible=true;
}
void AddMessage(Object sender, EventArgs e) {
string strSQL = "INSERT INTO Guestboog (Name, Email, [Date], Body) VALUES (" +
"'" + tbName.Text.Replace("'","''") + "'," +
"'" + tbEmail.Text.Replace("'","''") + "'," +
"Now()," +
"'" + tbMessage.Text.Replace("'","''") + "')";
OleDbConnection SQLCon = new OleDbConnection(ConnStr);
SQLCon.Open();
OleDbCommand objCmd = new OleDbCommand(strSQL, SQLCon);
objCmd.ExecuteNonQuery();
SQLCon.Close();
SendEmail();
Response.Redirect("guestbook.aspx");
}
void DataBind() {
OleDbConnection SQLCon = new OleDbConnection(ConnStr);
DataSet ds = new DataSet();
string strSQL = "Select * FROM Guestbook ORDER BY Date DESC";
SQLCon.Open();
OleDbDataAdapter objDataCmd = new OleDbDataAdapter(strSQL, SQLCon);
objDataCmd.Fill(ds);
SQLCon.Close();
repTags.DataSource = ds;
repTags.DataBind();
}
void SendEmail() {
MailMessage mail = new MailMessage();
mail.From = tbEmail.Text;
mail.To = "send@to.dk";
mail.Subject = "Guestbook signed";
string body;
mail.Body = "Name: " + tbName.Text + " (" + tbEmail.Text + ")\n" + "Message: " + tbMessage.Text;
mail.BodyFormat = MailFormat.Text;
SmtpMail.SmtpServer = "Localhost";
SmtpMail.Send(mail);
}
</script>
<html><body>
<form runat="server" id="TheForm">
<asp:Placeholder id="phAddMessage" runat="server">
<table>
<tr><td>Name:</td><td><asp:TextBox id="tbName" maxlength="50" runat="Server"/>
<asp:RequiredFieldValidator ControlToValidate="tbName" ErrorMessage="Please enter a name" runat="server"/>
</td></tr>
<tr><td>Email:</td><td><asp:TextBox id="tbEmail" maxlength="50" runat="Server"/></td></tr>
<tr><td valign="top"><br/>Message:</td><td valign="top">
<asp:RequiredFieldValidator ControlToValidate="tbMessage" ErrorMessage="Please enter a message" runat="server"/><br/>
<asp:TextBox textmode="Multiline" cols="50" rows="10" id="tbMessage" runat="Server"/>
</td></tr>
<tr><td colspan="2" align="right">
<table width="75px"><tr><td><div class="htmlbutton">
<asp:LinkButton OnClick="AddMessage" runat="server" text="Submit"/>
</div></td></tr></table>
</td><td/></tr>
</table>
</asp:PlaceHolder>
<asp:Repeater id="repTags" runat="server" EnableViewState="False">
<HeaderTemplate>
Every personal homepage gotta have one, so here it is!<br/>
<div class="headline">The Guestbook</div>
<b>Feel free to add a message.</b><br/><br/>
<table width="100px"><tr><td><div class="htmlbutton">
<asp:LinkButton OnClick="ShowAddMessage" CausesValidation="False" runat="server" text="Add message"/>
</div></td></tr></table>
<table width="400px" cellspacing="0px">
<tr><td colspan="2"><hr/></td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td valign="top" width="75px"><b>From:</b></td><td><%# DataBinder.Eval(Container.DataItem, "Name") %></td></tr>
<tr><td valign="top"><b>Date:</b></td><td><%# (DataBinder.Eval(Container.DataItem, "Date")) %></td></tr>
<tr><td valign="top"><b>Message:</b></td><td style="border-width: 1px; border-style: solid; border-color: #738c9c;"><%# DataBinder.Eval(Container.DataItem, "Body").ToString().Replace("\n","<br/>") %></td></tr>
<tr><td colspan="2"><hr/></td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
<table width="100px"><tr><td><div class="htmlbutton">
<asp:LinkButton OnClick="ShowAddMessage" CausesValidation="False" runat="server" text="Add message"/>
</div></td></tr></table>
</FooterTemplate>
</asp:Repeater>
</form>
</body></html>