FormView Control in ASP.NET - Part 3
Introduction
In Part 2 of this
article series we have discussed how to use Paging with FormView Control. Now
in this article we will discuss how to Edit Data with FormView Control.
Edit Data with FormView Control
We can edit a database record with the FormView control. For example, we can use the technique given below to
edit any of the records in the BOOK_LIST database table.
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<style type="text/css">
html
{
background-color:silver;
}
#content
{
margin:auto;
width:600px;
padding:10px;
background-color:white;
font:14px Georgia,Serif;
}
a
{
color:blue;
}
</style>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="content">
<asp:FormView
id="frmBooks"
DataSourceID="SqlDataSource1"
DataKeyNames="ID"
AllowPaging="true"
Runat="server">
<ItemTemplate>
<b><u><%# Eval("TITLE")%></u></b>
<br />
<b>Serial Number:</b>
<%# Eval("ID") %>
<br />
<b>Author Name:</b>
<%# Eval("AUTHOR")%>
<br />
<b>Price:</b>
<%# Eval("PRICE") %>
<hr />
<asp:LinkButton
id="lnkEdit"
Text="Edit Book"
CommandName="Edit"
Runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:Label
id="lblTitle"
Text="Book Title:"
AssociatedControlID="txtTitle"
Runat="server" />
<br />
<asp:TextBox
id="txtTitle"
Text='<%# Bind("TITLE") %>'
Runat="server" />
<br /><br />
<asp:Label
id="lblAuthor"
Text="Author:"
AssociatedControlID="txtAuthor"
Runat="server" />
<br />
<asp:TextBox
id="txtAuthor"
Text='<%# Bind("AUTHOR") %>'
Runat="server" />
<br /><br />
<asp:Label
id="lblPrice"
Text="Price:"
AssociatedControlID="txtPrice"
Runat="server" />
<br />
<asp:TextBox
id="txtPrice"
Text='<%# Bind("PRICE") %>'
Runat="server" />
<br /><br />
<asp:LinkButton
id="lnkUpdate"
Text="Update Book"
CommandName="Update"
Runat="server" />
<asp:LinkButton
id="lnkCancel"
Text="Cancel Update"
CommandName="Cancel"
Runat="server" />
</EditItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>"
SelectCommand="SELECT [ID], [TITLE], [AUTHOR], [PRICE] FROM
[BOOK_LIST]"
UpdateCommand="UPDATE BOOK_LIST SET ID =@ID, TITLE =@ID, AUTHOR =@AUTHOR,
PRICE =@PRICE WHERE ID=@ID">
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
First, notice that the FormView control includes a DataKeyNames property that contains the name of the primary key from the data
source. We need to specify a primary key when editing records.
Next, notice that the FormView control's ItemTemplate includes a LinkButton that looks like this:
<asp:LinkButton
id="lnkEdit"
Text="Edit Book"
CommandName="Edit"
Runat="server" />
This LinkButton includes a CommandName property with the value Edit.
Clicking the link switches the FormView control into Edit mode. We could use any other control here that
supports the CommandName property such as a Button or ImageButton control.
Next, notice that the FormView control includes an EditItemTemplate.
This template contains the form for editing the record. Each form field uses a
two-way databinding expression. For example, the form field for editing the
book title looks like this:
<asp:TextBox
id="txtTitle"
Text='<%# Bind("TITLE") %>'
Runat="server" />
The Bind("TITLE") method binds the TITLE column to the Text property
of the TextBox control.
Finally, notice that the EditItemTemplate includes
both a LinkButton for updating the database record and a LinkButton for
canceling the update. The LinkButton for updating the record looks like this:
<asp:LinkButton
id="lnkUpdate"
Text="Update Book"
CommandName="Update"
Runat="server" />
This LinkButton includes a CommandName property, which has the value Update.
When we click this LinkButton,
the SQL statement represented by the SqlDataSource control's UpdateCommand is executed.
Note: Continue
in Next Part.

Comments
Post a Comment