2016-08-16 58 views
0

我有一个gridview,其中包含我想要触发事件的每一行上的一个按钮。点击按钮时,事件不会触发,发生的所有事情是onLoad事件触发,并且页面重新加载而不填充gridview。OnRowCommand没有在GridView上触发

在.aspx代码如下:

<asp:GridView id="gvUsers" 
     OnRowCommand="gvUsers_RowCommand" 
     AutoGenerateColumns="False" 
     runat="server"> 
    <Columns> 
     <asp:BoundField DataField="UserID" HeaderText="UserID" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <%# Eval("FirstName")%> <%# Eval("LastName")%> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField> 
      <ItemTemplate> 
      <asp:Button ID="lnkSubmit" runat="server" CommandName="Submit" Text="Action" CommandArgument='<%# CType(Container,GridViewRow).RowIndex %>' ></asp:Button> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

我aspx.cs如下:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     Dim dr As SqlDataReader = db.GetUsers("[email protected]") 
     Dim users As New List(Of FLLib.FixturesLive.Core.User) 
     While dr.Read 
      Dim u As New FLLib.FixturesLive.Core.User 
      u.UserID = dr("UserID") 
      u.FirstName = dr("FirstName") 
      u.LastName = dr("LastNAme") 
      u.Sex = dr("Sex") 
      u.EmailAddress = dr("Email") 
      users.Add(u) 
     End While 

     gvUsers.DataSource = users.ToArray 
     gvUsers.DataBind() 
    End If 
End Sub 


Sub gvUsers_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) 

    If e.CommandName.Equals("Submit") Then 
     Dim oItem As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).NamingContainer, GridViewRow) 
     Dim RowIndex As Integer = oItem.RowIndex 
    End If 
End Sub 

任何帮助,将不胜感激。

感谢 安迪

回答

0

您省略了Handles gvUsers.RowCommand部分。改变你的事件签名像这样

Sub gvUsers_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles gvUsers.RowCommand