<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
string DataKeyName = "Id";
Hashtable Keys
{
get
{
if (ViewState["Keys"] == null)
ViewState["Keys"] = new Hashtable();
return (Hashtable)ViewState["Keys"];
}
}
protected void rptProducts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==
ListItemType.AlternatingItem)
{
Keys.Add(e.Item.ItemIndex, DataBinder.Eval(e.Item.DataItem, "Id"));
}
}
protected void rptProducts_DataBinding(object sender, EventArgs e)
{
Keys.Clear();
}
protected void rptProducts_ItemCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "Update":
UpdateProduct(e);
break;
case "Insert":
InsertProduct(e);
break;
case "Delete":
DeleteProduct(e);
break;
}
}
void UpdateProduct(RepeaterCommandEventArgs e)
{
TextBox txtTitle = (TextBox)e.Item.FindControl("txtTitle");
TextBox txtDirector = (TextBox)e.Item.FindControl("txtDirector");
CheckBox chkInStock = (CheckBox)e.Item.FindControl("chkInStock");
srcProducts.UpdateParameters["Id"].DefaultValue = Keys[e.Item.ItemIndex].ToString();
srcProducts.UpdateParameters["Title"].DefaultValue = txtTitle.Text;
srcProducts.UpdateParameters["Director"].DefaultValue = txtDirector.Text;
srcProducts.UpdateParameters["InStock"].DefaultValue = chkInStock.Checked.ToString();
srcProducts.Update();
}
void InsertProduct(RepeaterCommandEventArgs e)
{
TextBox txtTitle = (TextBox)e.Item.FindControl("txtTitle");
TextBox txtDirector = (TextBox)e.Item.FindControl("txtDirector");
CheckBox chkInStock = (CheckBox)e.Item.FindControl("chkInStock");
srcProducts.InsertParameters["Title"].DefaultValue = txtTitle.Text;
srcProducts.InsertParameters["Director"].DefaultValue = txtDirector.Text;
srcProducts.InsertParameters["InStock"].DefaultValue = chkInStock.Checked.ToString();
srcProducts.Insert();
}
void DeleteProduct(RepeaterCommandEventArgs e)
{
srcProducts.DeleteParameters["Id"].DefaultValue = Keys[e.Item.ItemIndex].ToString();
srcProducts.Delete();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<form id="form1" runat="server">
<div class="content">
<asp:Repeater
id="rptProducts"
DataSourceID="srcProducts"
Runat="server" OnItemCommand="rptProducts_ItemCommand" OnItemDataBound=
"rptProducts_ItemDataBound" OnDataBinding="rptProducts_DataBinding">
<HeaderTemplate>
<table class="products">
<tr>
<td>Title</td>
<td>Director</td>
<td>In Theaters</td>
</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="chkInStock"
Checked='<%#Eval("InStock")%>'
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?');"
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="chkInStock"
Runat="server" />
</td>
<td>
<asp:LinkButton
id="lnkInsert"
CommandName="Insert"
Text="Insert"
Runat="server" />
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource
id="srcProducts"
ConnectionString="<%$ ConnectionStrings:Products %>"
SelectCommand="SELECT Id,Title,Director,InStock
FROM Products"
UpdateCommand="UPDATE Products SET Title=@Title,
Director=@Director,InStock=@InStock
WHERE Id=@Id"
InsertCommand="INSERT Products (Title,Director,InStock)
VALUES (@Title,@Director,
DeleteCommand="DELETE Products WHERE Id=@Id"
Runat="server">
<UpdateParameters>
<asp:Parameter Name="Id" />
<asp:Parameter Name="Title" />
<asp:Parameter Name="Director" />
<asp:Parameter Name="InStock" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Title" />
<asp:Parameter Name="Director" />
<asp:Parameter Name="InStock" />
</InsertParameters>
<DeleteParameters>
<asp:Parameter Name="Id" />
</DeleteParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
File: Web.config
<configuration>
<connectionStrings>
<add name="Products"
connectionString="Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True;User Instance=True" />
</connectionStrings>
</configuration>