簡體   English   中英

ASP.NET Gridview按鈕onclick不觸發

[英]ASP.NET Gridview button onclick not firing

大家好,我在網格中有一個simpe 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

使用命令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

您需要在RowCommand事件中處理Gridview的按鈕單擊事件

注意:請參閱添加到按鈕的CommandNameCommandArgument屬性。

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

如果btnExecutiveGenerate_Click是vb.net事件處理程序,則將OnClientClick事件更改為OnClick

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

OnClientClick事件用於執行客戶端腳本,如果您將OnClientClick事件與OnClick事件一起提供,則如果OnClientClick返回true ,則僅會調用OnClick事件。

因此,請確保使用OnClientClick事件返回的是true或false。

請注意,如果要在頁面Laod中加載數據,請執行以下操作

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

這可能對某人有所幫助,但是我遇到了編輯按鈕,未在行(而不是頁腳)中觸發事件。 原因是在gridview中包含一個標簽,該標簽具有與頁面其他位置相同的ID。 似乎這不會對不包含任何此類標簽的頁腳行造成問題。 我希望這可以幫助別人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM