关于Gridview表格中的按钮事件

 

关于Gridview表格中按钮

 

如果你需要在Gridview中添加按钮,那么这个按钮可能是为了实现这样的功能:

A. 点击按钮后,弹出一个窗体。例如:弹出一个可以修改数据的窗体等

B. 点击按钮后,执行一个操作,面这个操作往往是针对按钮所在行数据的操作,否则你完全可以不在Gridview中添加按钮

 

根据上面的需要,我们讨论一下GridView中的按钮事件,我们经常会用于的按钮事件有这么几个:

1.       OnClick 事件

2.       OnClientClick 事件

3.       OnCommand 事件

 

  •  OnClick 事件 和OnClientClick 事件

       我理解它们是用于执行客户端函数或脚本的,有朋友说OnClick 事件可以执行服务端过程或函数,我测试总出问题不知道是什么原因?

       这两个事件一般主要用于弹出新的页面,也可以做为操作前的提示信息(例如删除按钮的提示信息等),因为它们的执行顺序是在OnCommand事件前面的。

  •  OnCommand 事件

一般这个事件用来执行服务端的事件,而且与前面两个事件相比,这个事件是可以传递参数的,所以它往往可以用于实现更多的功能

 

举例部分:

  •  OnClick 事件 和OnClientClick 事件

第一种,在客户端代码中定义(这里列出定义的部分)

 <asp:TemplateField HeaderText="服务端按钮">

         <ItemTemplate>

          <asp:Button ID="Button2" runat="server"   

                onclientclick="return confirm('您确认执行删除操作吗?')" Text="删除" />

         </ItemTemplate>

 </asp:TemplateField>

第二种,在代码中实现按钮事件    

Button2.Attributes.Add("onclick", "yourfunction();")


您也可以在这些事件增加参数来实现更多的功能 

  • OnCommand 事件

这个事件实现起来比较复杂一些,先说下它可能涉及到几个属性

CommandName CommandArgument

这两个属性其实在OnCommand执行事件中参数CommandEventArgs的两个常用到值,我们用CommandName来区分点击的按钮,用CommandArgument的值来实现特定的操作(例如删除操作时,CommandArgument可以是ID值或行的index值)

 

下面简单介绍下实现的步骤:

第一步:定义相关的属性

 <asp:TemplateField HeaderText="客户端按钮">

       <ItemTemplate>

        <asp:Button ID="Button1" CommandName="Button1" CommandEventArgs='<%# Eval("CategoryID") %>' runat="server"  onclientclick="return confirm('您确认要执行吗?')" Text="显示" />

       </ItemTemplate>

</asp:TemplateField>

第二步:定义后台事件

Private Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand

        Select Case e.CommandName
            Case "Button1"
                '获取参数值
                Dim myIndex As Int32 = Convert.ToInt32(e.CommandArgument)
                '找到相应的行
                Dim selRow As GridViewRow = GridView1.Rows(myIndex)
                MsgBox(selRow.Cells(2).Text)        End Select
End Sub

如果我们没有在第一步中定义CommandEventArgs,那么需要增加这样一个事件

    Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated

        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim btn1 As Button = CType(e.Row.FindControl("Button1"), Button)
            btn1.CommandArgument = e.Row.RowIndex
        End If

    End Sub
 

大家可以看到,后台事件是在GridView1_RowCommand这个标准的事件中实现的,如果我们要使用自已定义的事件,应该如何来实现

第一步:前台

   <asp:TemplateField HeaderText="客户端按钮">

       <ItemTemplate>

          <asp:Button ID="Button4" CommandName="Button1" runat="server" 

             OnCommand="btn1Click" Text="打开" />       

       </ItemTemplate>

</asp:TemplateField>


第二步:设定参加值

    Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated

        If e.Row.RowType = DataControlRowType.DataRow Then

            Dim btn1 As Button = CType(e.Row.FindControl("Button1"), Button)

            btn1.CommandArgument = e.Row.RowIndex

        End If

End Sub


 

第三步:定义事件

    Private Sub btn1Click(ByVal CommandArgument As String)

        '获取参数值

        Dim myIndex As Int32 = Convert.ToInt32(CommandArgument)

        '找到相应的行

        Dim selRow As GridViewRow = GridView1.Rows(myIndex)

        MsgBox(selRow.Cells(2).Text)

End Sub


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值