Introduction
In
Part 2 article of this series, we have discussed how to use Templates with
Repeater Control but now in this part we will discuss how to handle Repeater
Control events.
Repeater Control Events
Repeater control supports the following events mostly:
- DataBinding: It is raised when the
Repeater control is bound to its data source.
- ItemCommand: It is raised when a
control contained in the Repeater control raises an event.
- ItemCreated: It is raised when
each Repeater item is created.
- ItemDataBound: It is raised when
each Repeater item is bound.
The page given below illustrates how we can
use the DataBinding, ItemCommand, and ItemDataBound events. This page uses a
Repeater control to update, delete, and insert database records.
<%@
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">
' The name of the primary key column
Dim DataKeyName
As String =
"Id"
'''
<summary>
''' Stores the primary keys in ViewState
'''
</summary>
ReadOnly
Property Keys() As
Hashtable
Get
If IsNothing(ViewState("Keys"))
Then
ViewState("Keys")
= New
Hashtable()
End If
Return
CType(ViewState("Keys"),
Hashtable)
End Get
End
Property
'''
<summary>
''' Build the primary key collection
'''
</summary>
Protected
Sub rptMovies_ItemDataBound(ByVal
sender As Object,
ByVal e As
RepeaterItemEventArgs)
If e.Item.ItemType =
ListItemType.Item
Or e.Item.ItemType =
ListItemType.AlternatingItem
Then
Keys.Add(e.Item.ItemIndex,
DataBinder.Eval(e.Item.DataItem,
"Id"))
End If
End Sub
'''
<summary>
''' Clear the primary keys when Repeater
is rebound
''' to its data source
'''
</summary>
Protected
Sub rptMovies_DataBinding(ByVal
sender As Object,
ByVal e As
EventArgs)
Keys.Clear()
End Sub
'''
<summary>
''' When you click the Update,Insert, or
Delete
''' button, this method executes
'''
</summary>
Protected
Sub rptMovies_ItemCommand(ByVal
source As Object,
ByVal e As
RepeaterCommandEventArgs)
Select Case
e.CommandName
Case
"Update"
UpdateMovie(e)
Exit Sub
Case
"Insert"
InsertMovie(e)
Exit Sub
Case
"Delete"
DeleteMovie(e)
Exit Sub
End
Select
End Sub
'''
<summary>
''' Update a movie record
'''
</summary>
Private
Sub UpdateMovie(ByVal e
As
RepeaterCommandEventArgs)
' Get the form fields
Dim txtTitle
As
TextBox = CType(e.Item.FindControl("txtTitle"),
TextBox)
Dim txtDirector
As
TextBox = CType(e.Item.FindControl("txtDirector"),
TextBox)
Dim chkInTheaters
As
CheckBox = CType(e.Item.FindControl("chkInTheaters"),
CheckBox)
' Set
the DataSource parameters
SqlDataSource1.UpdateParameters("Id").DefaultValue
= Keys(e.Item.ItemIndex).ToString()
SqlDataSource1.UpdateParameters("Title").DefaultValue
= txtTitle.Text
SqlDataSource1.UpdateParameters("Director").DefaultValue
= txtDirector.Text
SqlDataSource1.UpdateParameters("InTheaters").DefaultValue
= chkInTheaters.Checked.ToString()
' Fire
the UpdateCommand
SqlDataSource1.Update()
End Sub
'''
<summary>
''' Insert a movie record
'''
</summary>
Private
Sub InsertMovie(ByVal e
As
RepeaterCommandEventArgs)
' Get the form fields
Dim txtTitle
As
TextBox = CType(e.Item.FindControl("txtTitle"),
TextBox)
Dim txtDirector
As
TextBox = CType(e.Item.FindControl("txtDirector"),
TextBox)
Dim chkInTheaters
As
CheckBox = CType(e.Item.FindControl("chkInTheaters"),
CheckBox)
' Set
the DataSource parameters
SqlDataSource1.InsertParameters("Title").DefaultValue
= txtTitle.Text
SqlDataSource1.InsertParameters("Director").DefaultValue
= txtDirector.Text
SqlDataSource1.InsertParameters("InTheaters").DefaultValue
= chkInTheaters.Checked.ToString()
' Fire
the InsertCommand
SqlDataSource1.Insert()
End Sub
'''
<summary>
''' Delete a movie record
'''
</summary>
Private
Sub DeleteMovie(ByVal e
As
RepeaterCommandEventArgs)
' Set the DataSource parameters
SqlDataSource1.DeleteParameters("Id").DefaultValue
= Keys(e.Item.ItemIndex).ToString()
' Fire
the DeleteCommand
SqlDataSource1.Delete()
End Sub
</script>
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
runat="server">
<style
type="text/css">
html
{
background-color:silver;
}
.content
{
width:600px;
height:400px;
padding:10px;
border:solid
1px black;
background-color:white;
}
a
{
color:red;
}
table
{
background:green;
border:1em
none red;
}
</style>
<title></title>
</head>
<body>
<form
id="form1"
runat="server">
<div
class="content">
<h1>MOVIE
LIST OF THE YEAR</h1>
<asp:Repeater
id="rptMovies"
DataSourceID="SqlDataSource1"
OnItemCommand="rptMovies_ItemCommand"
OnItemDataBound="rptMovies_ItemDataBound"
OnDataBinding="rptMovies_DataBinding"
Runat="server">
<HeaderTemplate>
<table>
<tr>
<th>Title</th>
<th>Director</th>
<th>In
Theaters</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:TextBox
id="txtTitle"
Text='<%#Eval("Title")%>'
Runat="server"
/>
</td>
<td>
<asp:TextBox
id="txtDirector"
Text='<%#Eval("Director")%>'
Runat="server"
/>
</td>
<td>
<asp:CheckBox
id="chkInTheaters"
Checked='<%#Eval("InTheaters")%>'
Runat="server"
/>
</td>
<td>
<asp:LinkButton
id="lnkUpdate"
CommandName="Update"
Text="Update"
Runat="server"
/>
||||||
<asp:LinkButton
id="lnkDelete"
CommandName="Delete"
Text="Delete"
OnClientClick="return
confirm('Are you sure want to delete?');"
Runat="server"
/>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr>
<td>
<asp:TextBox
id="txtTitle"
Runat="server"
/>
</td>
<td>
<asp:TextBox
id="txtDirector"
Runat="server"
/>
</td>
<td>
<asp:CheckBox
id="chkInTheaters"
Runat="server"
/>
</td>
<td>
<asp:LinkButton
id="lnkInsert"
CommandName="Insert"
Text="Insert"
Runat="server"
/>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$
ConnectionStrings:DatabaseConnectionString1 %>"
ProviderName="<%$
ConnectionStrings:DatabaseConnectionString1.ProviderName
%>"
SelectCommand="SELECT
Id,Title,Director,InTheaters
FROM
Movie"
UpdateCommand="UPDATE Movie SET Title=@Title,
Director=@Director,InTheaters=@InTheaters
WHERE Id=@Id"
InsertCommand="INSERT Movie (Title,Director,InTheaters)
VALUES (@Title,@Director,@InTheaters)"
DeleteCommand="DELETE FROM Movie WHERE
Id=@Id">
<UpdateParameters>
<asp:Parameter
Name="Id"
/>
<asp:Parameter
Name="Title"
/>
<asp:Parameter
Name="Director"
/>
<asp:Parameter
Name="InTheaters"
/>
</UpdateParameters>
<InsertParameters>
<asp:Parameter
Name="Title"
/>
<asp:Parameter
Name="Director"
/>
<asp:Parameter
Name="InTheaters"
/>
</InsertParameters>
<DeleteParameters>
<asp:Parameter
Name="Id"
/>
</DeleteParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
Note: This is last part of this article series. Please do read all parts
of this articles series for complete understanding.
HAVE A GREAT CODING!