关于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、付费专栏及课程。

余额充值