ItemTemplate中的控件事件并不能被触发,该如何解决

ItemTemplate中的控件事件并不能被触发
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
    CodeBehind="GoodsList.aspx.cs" Inherits="NorthSeven.GoodsList" %>

<%@ Register Assembly="NorthSeven" Namespace="NorthSeven" TagPrefix="cc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <script type="text/javascript">
    window.onload = function () {
    <%sh();%>
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <div style="width: 100%; height: 100%; overflow: hidden;">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BorderWidth="0px"
            PageSize="5" Style="float: left;" ShowHeader="False" Width="20%" AllowPaging="False"
            OnRowCommand="GridView1_RowCommand">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <div>
                            <img border="0" height="220" src='<%#DataBinder.Eval(Container.DataItem,"CotyImgAdrs")%>'
                                width="220">
                            <div>
                                <asp:Label class="price" ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"CotyUprice")%>'></asp:Label>
                                <asp:Button class="shopCar"   ID="D1btnCar" runat="server" OnClick="D1btnCar_Click"
                                    CommandName="Car1" AutoPostBack="true" CommandName="car1" Text="加入购物车"></asp:Button>
                            </div>
                            <div>
                                <asp:Button class="CotyName" ID="Button2" Width="200" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"CotyName")%>' />
                                <asp:Button class="CotyActyTxt" ID="Button3" Width="200" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"CotyActyTxt")%>' />
                            </div>
                        </div>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</asp:Content>
-----------------------------------------------------------------------------------------------------------
貌似是ItemTemplate中的控件不能直接访问.cs文件中的事件,所以尝试了以下几种方式
1.前台手写上了OnClick="D1btnCar_Click"
后台中添加了对应的事件代码--断点调试不执行
protected void D1btnCar_Click(object sender, EventArgs e)
        {
            //想要执行的代码
        }
2.添加OnRowCommand事件
前台添加:
OnRowCommand="GridView1_RowCommand"
后台添加:--断点调试不执行
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Car1")
            {
               //想要执行的代码
           }
        }
3. 绑定数据后,手动绑定事件
                for (int i = 0; i < this.GridView1.Rows.Count; i++)
                {
                    //用FindControl()方法遍历找到控件强转成控件类型
                    btn = this.GridView1.Rows[i].Cells[0].FindControl("D1btnCar") as Button;
                    btn.Click += new EventHandler(D1btnCar_Click);
                } 
--断点调试不执行
protected void D1btnCar_Click(object sender, EventArgs e)
        {
            Response.Write("<script>alert('删除成功!')</script>");
        }


------解决思路----------------------
第一种,第二种绝对可行的,第一种通过NamingContainer可以获取到它的包含对象,第二种是默认天生支持的,你还是将你按钮上多余的属性删除试试,我已经看到了两个CommandName