内容如题目。我在一个页面中也是这样弄的。可以响应。
但是我又在一个页面中这样弄却不响应了。
单击后页面的page_load会执行。就是不进入单击事件函数体。
这是怎么回事啊?
 <asp:TemplateField>
    <ItemTemplate>
       <asp:Button ID="btnEdit" runat="server" Text="编辑" onclick="btnEdit_Click" />
       <asp:Panel ID="Panel1" runat="server" Visible="false">
           <asp:Button ID="btnUpdate" runat="server" Text="更新" onclick="btnUpdate_Click" />
           <asp:Button ID="btnCancel" runat="server" Text="取消" onclick="btnCancel_Click" />
       </asp:Panel>
    </ItemTemplate>
 </asp:TemplateField>

解决方案 »

  1.   

    参考:http://blog.csdn.net/insus/archive/2008/03/30/2229898.aspx
      

  2.   

    <ItemTemplate>
                 <asp:Button ID="Btn" runat="server" Text="查看" CommandArgument= <%# Eval("BH") %>
                 OnCommand="Btn_Click"/>
             </ItemTemplate>
             </asp:TemplateField>
     
       
       protected void Btn_Click(object sender, CommandEventArgs e)
        {
            string str = e.CommandArgument.ToString();
        }      
    或Button btn = (Button)e.Row.FindControl("Btn"); 
      

  3.   

    模板列里的按钮点击事件,按正规的作法是必须通过GridView.RowCommand事件里处理。注意,如果有自己的处理逻辑,最好不要把CommandName指定为Select, Update, Edit, Delete,Cancel。如:
    <asp:TemplateField> 
        <ItemTemplate> 
          <asp:Button ID="btnEdit" runat="server" Text="编辑" CommandName="MyEdit" /> 
          <asp:Panel ID="Panel1" runat="server" Visible="false"> 
              <asp:Button ID="btnUpdate" runat="server" Text="更新" CommandName="MyUpdate"  /> 
              <asp:Button ID="btnCancel" runat="server" Text="取消" CommandName="MyCancel" /> 
          </asp:Panel> 
        </ItemTemplate> 
    </asp:TemplateField> ...GridView1_RowCommand(...)
    {
        if(e.CommandName == "MyEdit"){...}
        if(e.CommandName == "MyUpdate") { ...}
    }
    当然一般是通过CommandArgument传递附加信息,如当前行的DataKey.