Data Binding ASP.Net Tutorial

<%@ Page Language="C#" %>
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

    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();
    }



    
    
            id="rptProducts"
        DataSourceID="srcProducts"
        Runat="server" OnItemCommand="rptProducts_ItemCommand" OnItemDataBound=
          "rptProducts_ItemDataBound" OnDataBinding="rptProducts_DataBinding">
        
        
        
            Title
            Director
            In Theaters
        
        

        
        
            
                            id="txtTitle"
                Text='<%#Eval("Title")%>'
                Runat="server" />
            
            
                            id="txtDirector"
                Text='<%#Eval("Director")%>'
                Runat="server" />
            
            
                            id="chkInStock"
                Checked='<%#Eval("InStock")%>'
                Runat="server" />
            
            
                            id="lnkUpdate"
                CommandName="Update"
                Text="Update"
                Runat="server" />
             | 
                            id="lnkDelete"
                CommandName="Delete"
                Text="Delete"
                OnClientClick="return confirm('Are you sure?');"
                Runat="server" />
            
        
        

        
        
            
                            id="txtTitle"
                Runat="server" />
            
            
                            id="txtDirector"
                Runat="server" />
            
            
                            id="chkInStock"
                Runat="server" />
            
            
                            id="lnkInsert"
                CommandName="Insert"
                Text="Insert"
                Runat="server" />
            
        
        
        

    
            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">
        
            
            
            
            
        

        
            
            
            
        

        
            
        

    
    

    


File: Web.config

  
             connectionString="Data Source=.\SQLEXPRESS;
         AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True;User Instance=True" />