First, the FormView control includes a DataKeyNames property that contains the name of the primary key from the data source.. Next, the FormView control’s ItemTemplate includes a LinkBut
Trang 1id=”txtTitle”
Text=’<%# Bind(“Title”) %>’
Runat=”server” />
<br /><br />
<asp:Label
id=”lblDirector”
Text=”Movie Director:”
AssociatedControlID=”txtDirector”
Runat=”server” />
<br />
<asp:TextBox
id=”txtDirector”
Text=’<%# Bind(“Director”) %>’
Runat=”server” />
<br /><br />
<asp:Label
id=”lblBoxOfficeTotals”
Text=”Box Office Totals:”
AssociatedControlID=”txtBoxOfficeTotals”
Runat=”server” />
<br />
<asp:TextBox
id=”txtBoxOfficeTotals”
Text=’<%# Bind(“BoxOfficeTotals”) %>’
Runat=”server” />
<br /><br />
<asp:LinkButton
id=”lnkUpdate”
Text=”Update Movie”
CommandName=”Update”
Runat=”server” />
|
<asp:LinkButton
id=”lnkCancel”
Text=”Cancel Update”
CommandName=”Cancel”
Runat=”server” />
</EditItemTemplate>
</asp:FormView>
<asp:SqlDataSource
id=”srcMovies”
ConnectionString=”<%$ ConnectionStrings:Movies %>”
SelectCommand=”SELECT Id,Title,Director,BoxOfficeTotals
FROM Movies”
Trang 2UpdateCommand=”UPDATE Movies SET Title=@Title,
Director=@Director,BoxOfficeTotals=@BoxOfficeTotals
WHERE Id=@Id”
Runat=”server” />
</div>
</form>
</body>
</html>
You should notice several things about the FormView control in Listing 12.22 First, the
FormView control includes a DataKeyNames property that contains the name of the primary
key from the data source You need to specify a primary key when editing records
Next, the FormView control’s ItemTemplate includes a LinkButton that looks like this:
<asp:LinkButton
id=”lnkEdit”
Text=”Edit Movie”
CommandName=”Edit”
Runat=”server” />
This LinkButton includes a CommandName property with the value Edit Clicking the link
switches the FormView control into Edit mode You could use any other control here that
supports the CommandName property such as a Button or ImageButton control
Next, 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 movie 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, 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 Movie”
CommandName=”Update”
Runat=”server” />
Trang 3This LinkButton includes a CommandName property, which has the value Update When you
click this LinkButton, the SQL statement represented by the SqlDataSource control’s
UpdateCommand is executed
NOTE
If you want the FormView control to be in Edit mode by default, you can assign the
value Edit to the FormView control’s DefaultMode property
Inserting Data with the FormView Control
You can use the FormView control to insert new records into a database table For example,
the page in Listing 12.23 enables you to insert a new movie record into the Movies
data-base table
LISTING 12.23 ShowFormViewInserting.aspx
<%@ Page Language=”C#” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head id=”Head1” runat=”server”>
<style type=”text/css”>
html
{
background-color:silver;
}
#content
{
margins:auto;
width:600px;
padding:10px;
background-color:white;
font:14px Georgia,Serif;
}
a
{
color:blue;
}
</style>
<title>Show FormView Inserting</title>
</head>
<body>
<form id=”form1” runat=”server”>
<div id=”content”>
Trang 4<asp:FormView
id=”frmMovies”
DataSourceID=”srcMovies”
AllowPaging=”true”
Runat=”server”>
<ItemTemplate>
<h1><%# Eval(“Title”) %></h1>
<b>Directed By:</b>
<%# Eval(“Director”) %>
<br />
<b>In Theaters:</b>
<%#Eval(“InTheaters”) %>
<hr />
<asp:LinkButton
id=”lnkNew”
Text=”New Movie”
CommandName=”New”
Runat=”server” />
</ItemTemplate>
<InsertItemTemplate>
<asp:Label
id=”lblTitle”
Text=”Movie Title:”
AssociatedControlID=”txtTitle”
Runat=”server” />
<br />
<asp:TextBox
id=”txtTitle”
Text=’<%# Bind(“Title”) %>’
Runat=”server” />
<br /><br />
<asp:Label
id=”lblDirector”
Text=”Movie Director:”
AssociatedControlID=”txtDirector”
Runat=”server” />
<br />
<asp:TextBox
id=”txtDirector”
Text=’<%# Bind(“Director”) %>’
Runat=”server” />
<br /><br />
<asp:CheckBox
id=”chkInTheaters”
Text=”In Theaters”
Checked=’<%# Bind(“InTheaters”) %>’
Trang 5Runat=”server” />
<br /><br />
<asp:LinkButton
id=”lnkInsert”
Text=”Insert Movie”
CommandName=”Insert”
Runat=”server” />
|
<asp:LinkButton
id=”lnkCancel”
Text=”Cancel Insert”
CommandName=”Cancel”
Runat=”server” />
</InsertItemTemplate>
</asp:FormView>
<asp:SqlDataSource
id=”srcMovies”
ConnectionString=”<%$ ConnectionStrings:Movies %>”
SelectCommand=”SELECT Id,Title,Director,InTheaters
FROM Movies”
InsertCommand=”INSERT Movies (Title,Director,InTheaters)
VALUES (@Title,@Director,
Runat=”server” />
</div>
</form>
</body>
</html>
You should notice several things about the page in Listing 12.23 First, ItemTemplate
includes a LinkButton control that looks like this:
<asp:LinkButton
id=”lnkNew”
Text=”New Movie”
CommandName=”New”
Runat=”server” />
Trang 6When you click this LinkButton control, the FormView switches into Insert mode and
displays the contents of the InsertTemplate The CommandName property has the value New
The FormView control includes InsertItemTemplate that contains the form for inserting a
new movie record Each form field uses a two-way databinding expression For example,
the InTheaters CheckBox looks like this:
<asp:CheckBox
id=”chkInTheaters”
Text=”In Theaters”
Checked=’<%# Bind(“InTheaters”) %>’
Runat=”server” />
The Bind(“InTheaters”) method binds the value of the CheckBox control’s Checked
prop-erty to the InTheaters database column
The InsertItemTemplate contains a LinkButton for inserting the record and a LinkButton
for canceling the insert operation The LinkButton for inserting a record looks like this:
<asp:LinkButton
id=”lnkInsert”
Text=”Insert Movie”
CommandName=”Insert”
Runat=”server” />
This LinkButton control includes a CommandName property that has the value Insert When
you click the LinkButton, the SQL command represented by the SqlDataSource control’s
InsertCommand is executed
NOTE
You can place the FormView control into Insert mode by default by assigning the value
Insert to the control’s DefaultMode property
Deleting Data with the FormView Control
You can use the FormView control to delete database records For example, the page in
Listing 12.24 enables you to delete records from the Movies database table (see Figure 12.16)
Trang 7FIGURE 12.16 Deleting a record with the FormView control
LISTING 12.24 ShowFormViewDeleting.aspx
<%@ Page Language=”C#” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head id=”Head1” runat=”server”>
<style type=”text/css”>
html
{
background-color:silver;
}
#content
{
margins:auto;
width:600px;
padding:10px;
background-color:white;
font:14px Georgia,Serif;
}
a
{
Trang 8color:blue;
}
</style>
<title>Show FormView Deleting</title>
</head>
<body>
<form id=”form1” runat=”server”>
<div id=”content”>
<asp:FormView
id=”frmMovies”
DataSourceID=”srcMovies”
DataKeyNames=”Id”
AllowPaging=”true”
Runat=”server”>
<ItemTemplate>
<h1><%# Eval(“Title”) %></h1>
<b>Directed By:</b>
<%# Eval(“Director”) %>
<br />
<b>In Theaters:</b>
<%#Eval(“InTheaters”) %>
<hr />
<asp:LinkButton
id=”lnkDelete”
Text=”Delete Movie”
CommandName=”Delete”
OnClientClick=”return confirm(‘Are you sure?’);”
Runat=”server” />
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource
id=”srcMovies”
ConnectionString=”<%$ ConnectionStrings:Movies %>”
SelectCommand=”SELECT Id,Title,Director,InTheaters
FROM Movies”
DeleteCommand=”DELETE Movies WHERE Id=@Id”
Runat=”server” />
</div>
</form>
</body>
</html>
Trang 9The FormView control includes a DataKeyNames property, which contains the name of the
primary key column from the data source When deleting records with the FormView
control, you need to indicate the primary key column
Furthermore, the ItemTemplate includes a LinkButton for deleting a record The
LinkButton looks like this:
<asp:LinkButton
id=”lnkDelete”
Text=”Delete Movie”
CommandName=”Delete”
OnClientClick=”return confirm(‘Are you sure?’);”
Runat=”server” />
This LinkButton includes a CommandName property that has the value Delete When you
click the LinkButton, the SQL command represented by the SqlDataSource control’s
DeleteCommand property is executed
Also, the LinkButton includes an OnClientClick property that calls the JavaScript
confirm() method to display a confirmation dialog box This extra script prevents users
from accidentally deleting database records
Summary
In this chapter, you learned how to work with individual database records by using the
DetailsView and FormView controls You learned how to use both controls to display,
page, edit, insert, and delete database records You also learned how to format the
appear-ance of both controls
Trang 10Using the Repeater and
DataList Controls
Using the Repeater Control Using the DataList Control Summary
Both the Repeater and DataList controls—the subjects of
this chapter—enable you to display a set of data items at a
time For example, you can use these controls to display all
the rows contained in a database table
The Repeater control is entirely template-driven You can
format the rendered output of the control in any way that
you want For example, you can use the Repeater control to
display records in a bulleted list, a set of HTML tables, or
even in a comma-delimited list
The DataList control is also template-driven However,
unlike the Repeater control, the default behavior of the
DataList control is to render its contents into an HTML
table The DataList control renders each record from its
data source into a separate HTML table cell
In this chapter, you learn how to use both of these controls
to display database data You also learn how to use each of
the different types of templates that each of the controls
supports Finally, you can see how to handle the different
types of events that the controls expose
Using the Repeater Control
The Repeater control provides you with the maximum
amount of flexibility in rendering a set of database records
You can format the output of the Repeater control in any
way that you want In this section, you learn how to
display data with the Repeater control and handle
Repeater control events