Mega Code Archive

 
Categories / ASP.Net Tutorial / Data Binding
 

Handling Repeater Control Events

<%@ 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" />             &nbsp;|&nbsp;             <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>