2

大家好,我在网格中有一个简单的 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>

PS我什至尝试过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

4 回答 4

3

使用命令 Argumnet,

<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
于 2013-08-30T08:12:19.847 回答
1

需要在事件中处理Gridview的按钮点击RowCommand事件

注意:请参阅添加到按钮的CommandName&属性。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
      }
}
于 2013-08-30T08:10:52.327 回答
0

OnClientClick事件更改为 OnClick if btnExecutiveGenerate_Clickis vb.net 事件处理程序

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

OnClientClickevent 用于执行客户端脚本,如果你给OnClientClick了带有事件的OnClick事件,那么如果只OnClientClick返回true它会调用OnClick事件。

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

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

Sub Page_Load
    If Not IsPostBack
        LoadGridViewData()
    End If
End Sub
于 2013-08-30T07:58:39.213 回答
0

这可能对某人有所帮助,但我遇到了编辑按钮没有在行内触发事件(而不是页脚)。原因是一个包含标签的网格视图,该标签与页面上其他地方的 ID 相同。看起来这并没有对不包含任何此类标签的页脚行造成问题。我希望这可以帮助别人。

于 2014-06-30T13:24:03.007 回答