<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<head>
<title>Updating a Row of Data with Validation (SQL)</title>
<link rel="stylesheet" href="/shared/netdemos.css">
<script language="C#" runat="server" src="fetchData_sql.cs" />
<script language="C#" runat="server">
SqlConnection myConn = new SqlConnection ( getConnection ( "aspnet" ) );
SqlCommand myCmd = new SqlCommand ( );
string id;
protected void Page_Load ( object src, EventArgs e ) {
myCmd.Connection = myConn;
id = Request.QueryString [ "id" ];
if ( !IsPostBack ) {
if ( id == null ) {
bindGrid ( );
loadPanel.Visible = true;
editPanel.Visible = false;
postPanel.Visible = false;
} else {
getMessage ( Request.QueryString [ "id" ] );
loadPanel.Visible = false;
editPanel.Visible = true;
postPanel.Visible = false;
}
} else {
loadPanel.Visible = false;
editPanel.Visible = false;
postPanel.Visible = true;
}
}
public void bindGrid ( ) {
myCmd.CommandText = "SELECT * FROM aspx_messages ORDER BY MessageDate DESC";
myConn.Open ( );
myGrid.DataSource = myCmd.ExecuteReader ( CommandBehavior.CloseConnection );
myGrid.DataBind ( );
}
public void getMessage ( String id ) {
SqlDataAdapter myAdapter = new SqlDataAdapter (
"SELECT * FROM aspx_messages WHERE MessageID=" + id, myConn );
DataTable msgDetails = new DataTable ( );
myAdapter.Fill ( msgDetails );
DataRowView myRow = msgDetails.DefaultView [ 0 ];
msgDate.Value = myRow [ "MessageDate" ].ToString ( );
msgFrom.Value = myRow [ "MessageFrom" ].ToString ( );
msgEmail.Value = myRow [ "Email" ].ToString ( );
msgSubject.Value = myRow [ "MessageSubject" ].ToString ( );
msgBody.Value = myRow [ "MessageBody" ].ToString ( );
editPanel.DataBind ( );
}
public void updateMessage ( object src, EventArgs e ) {
if ( Page.IsValid ) {
myCmd.CommandText = "UPDATE aspx_messages SET MessageFrom=@From, Email=@Mail, MessageSubject=@Subject, MessageBody=@Body where MessageID=" + id;
myCmd.Parameters.Add ( "@From", SqlDbType.NVarChar ).Value = msgFrom.Value;
myCmd.Parameters.Add ( "@Mail", SqlDbType.NVarChar ).Value = msgEmail.Value;
myCmd.Parameters.Add ( "@Subject", SqlDbType.NVarChar ).Value = msgSubject.Value;
myCmd.Parameters.Add ( "@Body", SqlDbType.NText ).Value = msgBody.Value;
myConn.Open ( );
myCmd.ExecuteNonQuery ( );
myConn.Close ( );
}
bindPostPanel ( id );
}
public void bindPostPanel ( String id ) {
myCmd.CommandText = "SELECT * FROM aspx_messages WHERE MessageId='" + id + "'";
myConn.Open ( );
listDetails.DataSource = myCmd.ExecuteReader ( CommandBehavior.SingleRow );
listDetails.DataBind ( );
myConn.Dispose ( );
}
</script>
</head>
<body>
<!-- #include virtual="~/shared/top.inc -->
<div class="header"><h2>ADO.NET Primer: <b>Updating a Row of Data</b> with Validation (<b>SQL</b>)</h2></div>
<!-- #include virtual="~/shared/viewsrc_top.inc" -->
<hr size=1 width=92%>
<center>
<form runat="server">
<asp:panel id="loadPanel" runat="server">
<h5>Select a Record to Edit</h5>
<asp:datagrid id="myGrid" runat="server"
width=80% cellpadding=5 gridlines="vertical"
bordercolor="black" borderwidth=1
font-size="10pt"
backcolor="ghostwhite"
alternatingitemstyle-backcolor="lightgray"
autogeneratecolumns=false>
<headerstyle backcolor="darkslategray"
forecolor="khaki" height=30 font-bold />
<columns>
<asp:boundcolumn headertext="Date"
datafield="MessageDate"
dataformatstring="{0:d}" />
<asp:hyperlinkcolumn headertext="From"
datanavigateurlfield="MessageID"
datanavigateurlformatstring="update.aspx?id={0}"
datatextfield="MessageFrom" />
<asp:boundcolumn headertext="Subject"
datafield="MessageSubject" />
</columns>
</asp:datagrid>
<p align="center"><a href="#top"><img alt="Back to top" border=0 height=32 onmouseover="status='Back to top of page'" src="/shared/top.gif" width=32></a></p>
</asp:panel>
<asp:panel id="editPanel" runat="server">
<h5>To save changes to the database, press Update.</h5>
<input type="hidden" id="msgDate" runat="server">
<table width="50%" class="tblEntry">
<col width=35%>
<col width=65%>
<tr>
<td align="right">Your name:</td>
<td><input id="msgFrom" runat="server">
<asp:requiredfieldvalidator runat="server"
controltovalidate="msgFrom"
errormessage="Sender�s name cannot be blank."
display="none" /></td></tr>
<tr>
<td align="right">Your email address:</td>
<td><input id="msgEmail" runat="server">
<asp:regularexpressionvalidator runat="server"
controltovalidate="msgEmail"
validationexpression="^[\w-]+@[\w-]+\.(com|net|org|edu|mil|gov)$"
errormessage="Please enter a valid e-mail address. "
display="none" /></td></tr>
<tr>
<td align="right">Your subject:</td>
<td><input id="msgSubject" runat="server"></td></tr>
<tr>
<td align="right">Your message:</td>
<td><textarea id="msgBody" rows=5 cols=50 runat="server"></textarea></td></tr>
</table>
<p><input type=submit value="Update" runat="server" onServerClick="updateMessage">
<input type=reset value="Cancel" onClick="self.location.replace ( 'update.aspx' )"></p>
<asp:validationsummary runat="server"
displaymode="SingleParagraph"
showmessagebox=true />
</form>
</asp:panel>
<asp:panel id="postPanel" runat="server">
<h5>Thank you for editing your comments. This record has been updated.</h5>
<asp:datalist id="listDetails" width="85%" runat="server">
<itemtemplate>
<table width=60% align="center" cellpadding=5 bgcolor="lightgreen">
<col width=35%>
<tr>
<td align="right">Date:</td>
<td><b><%# Eval ( "messageDate", "{0:d}" ) %></b></td></tr>
<tr>
<td align="right">Name:</td>
<td><b><%# Eval ( "messageFrom" ) %></b></td></tr>
<tr>
<td align="right">Email:</td>
<td><b><%# Eval ( "Email" ) %></b></td></tr>
<tr>
<td align="right">Subject:</td>
<td><b><%# Eval ( "messageSubject" ) %></b></td></tr>
<tr>
<td align="right">Message:</td>
<td><b><%# Eval ( "messageBody" ) %></b></td></tr>
</table>
</itemtemplate>
</asp:datalist>
<p>
<a href="javascript:history.go ( -1 )"><img alt="Back to Edit View" border=0 height=32 onmouseover="status='Back to Edit View'" src="/shared/prev.gif" width=32></a>
<a href="update.aspx"><img alt="Select Another Record" border=0 height=32 onmouseover="status='Select Another Record'" src="/shared/next.gif" width=32></a>
</p>
</asp:panel>
</form>
</center>
<hr size=1 width=92%>
<!-- #include virtual="~/shared/viewsrc.inc" -->
</body>
</html>