ASP.NET Gridview按钮onclick不会触发

时间:2013-08-30 07:51:13

标签: asp.net

大家好,我在网格中有一个简单的ASP按钮。但onclick事件似乎没有发生。我哪里出错了?

这是我的aspx页面的第一行。

<%@ Page Title="Trainer Data" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeFile="TrainerData.aspx.vb" Inherits="TrainerData"%>

我的gridview中的按钮..

<asp:GridView ID ="gvExecSummary" runat="server" CssClass="gridview" AllowSorting="false" AllowPaging="false" AutoGenerateColumns="false" Width="98%" >
<RowStyle Height="22px" />
<AlternatingRowStyle Height="22px" CssClass="bg" BackColor="LightGray"/>
<HeaderStyle Height="22px" BackColor="#4b6c9e" Font-Bold="true"/>
<Columns>
<asp:TemplateField  HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="5%" HeaderText="Action">
<ItemTemplate>
<asp:Button ID="btnExecutiveGenerate" runat="server" Text="Generate"     OnClientClick="btnExecutiveGenerate_Click" />
</ItemTemplate>
</asp:TemplateField>

P.S。我甚至试过onclick但它也不起作用。

编辑:我的服务器端代码。

Protected Sub btnExecutiveGenerate_Click(sender As Object, e As EventArgs)
    Dim gvrow As GridViewRow = CType(CType(sender, Control).Parent.Parent, GridViewRow)
    Dim lblSchoolId As System.Web.UI.WebControls.Label = gvrow.FindControl("lblSchoolMasterID")
    Dim lblFacultyId As System.Web.UI.WebControls.Label = gvrow.FindControl("lblFacultyMasterID")
    Dim btnExecutiveGenerate As System.Web.UI.WebControls.Button = gvrow.FindControl("btnExecutiveGenerate")

    PDF_Creation_Executive(Val(lblSchoolId.Text), Val(lblFacultyId.Text))

End Sub

4 个答案:

答案 0 :(得分:3)

使用命令参数,

<asp:TemplateField>
<ItemTemplate>
  <asp:Button ID="AddButton" runat="server" 
  CommandName="AddToCart" 
  CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"
  Text="Add to Cart" />
   </ItemTemplate> 
</asp:TemplateField>

添加代码页面

Protected Sub GridView1_RowCommand(ByVal sender As Object, _ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
 If (e.CommandName = "AddToCart") Then
  ' Retrieve the row index stored in the CommandArgument property.
  Dim index As Integer = Convert.ToInt32(e.CommandArgument)

  ' Retrieve the row that contains the button 
  ' from the Rows collection.
  Dim row As GridViewRow = GridView1.Rows(index)

  ' Add code here to add the item to the shopping cart.

 End If
End Sub

答案 1 :(得分:1)

您需要在RowCommand事件

中处理Gridview的按钮点击事件

注意:请参阅CommandName&amp; CommandArgument属性已添加到按钮中。

<asp:GridView ID ="gvExecSummary" runat="server" CssClass="gridview" AllowSorting="false" AllowPaging="false" AutoGenerateColumns="false" Width="98%" >
<RowStyle Height="22px" OnRowCommand="gvExecSummary_RowCommand"  />
<AlternatingRowStyle Height="22px" CssClass="bg" BackColor="LightGray"/>
<HeaderStyle Height="22px" BackColor="#4b6c9e" Font-Bold="true"/>
<Columns>
<asp:TemplateField  HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="5%" HeaderText="Action">
<ItemTemplate>
<asp:Button ID="btnExecutiveGenerate" runat="server" Text="Generate"   CommandName="GenerateExecutive" CommandArgument="<%#((GridViewRow)Container).RowIndex %>"  />
</ItemTemplate>
</asp:TemplateField>

并且RowCommand事件将是......

protected void gvExecSummary_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
      if (e.CommandName == "GenerateExecutive") 
      {
          // button click code goes here
      }
}

答案 2 :(得分:0)

如果OnClientClick是vb.net事件处理程序,则

OnClick事件更改为btnExecutiveGenerate_Click

<asp:Button ID="btnExecutiveGenerate" runat="server" Text="Generate"    
 OnClick="btnExecutiveGenerate_Click"/>

OnClientClick事件用于执行客户端脚本,如果您在OnClientClick事件中发出了OnClick个事件,那么如果OnClientClick仅返回true将致电OnClick活动。

所以如果您使用它,请确保从OnClientClick事件返回true或false。

请注意,如果您要在页面中加载数据,请执行以下操作

Sub Page_Load
    If Not IsPostBack
        LoadGridViewData()
    End If
End Sub

答案 3 :(得分:0)

这可能对某人有所帮助,但我遇到了编辑按钮而没有在行内(而不是页脚)触发事件。 原因是包含标签的gridview,其标识与页面上其他位置的ID相同。 看起来这不会导致页脚行出现问题,因为页脚行中没有任何此类标签。 我希望这有助于某人。