关于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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控件使用<br>1、鼠标经过行的时候改变该行的样式,鼠标离开行的时候恢复该行的样式<br>使用方法(设置属性): <br>MouseOverCssClass - 鼠标经过行时行的 CSS 类名<br><br>2、对多个字段进行复合排序;升序、降序的排序状态提示<br>使用方法(设置SmartSorting复合属性): <br>AllowSortTip - 是否启用排序提示 <br>AllowMultiSorting - 是否启用复合排序 <br>SortAscImageUrl - 升序提示图片的URL(不设置则使用默认图片) <br>SortDescImageUrl - 降序提示图片的URL(不设置则使用默认图片) <br>SortAscText - 升序提示文本 <br>SortDescText - 降序提示文本<br><br>3、根据按钮的CommandName设置其客户端属性<br>使用方法(设置ClientButtons集合属性): <br>BoundCommandName - 需要绑定的CommandName <br>AttributeKey - 属性的名称 <br>AttributeValue - 属性的值(两个占位符:{0} - CommandArgument;{1} - Text) <br>Position - 属性的值的位置<br><br>4、联动复选框(复选框的全选和取消全选)。选指定的父复选框,则设置指定的所有子复选框为选状态;取消选指定的父复选框,则设置指定的所有子复选框为取消选状态。如果指定的所有子复选框为均选状态,则设置指定的父复选框为选状态;如果指定的所有子复选框至少有一个为取消选状态,则设置指定的父复选框为取消选状态<br>使用方法(设置CascadeCheckboxes集合属性): <br>ParentCheckboxID - 模板列 父复选框ID <br>ChildCheckboxID - 模板列 子复选框ID <br>YYControls.Helper.SmartGridView的静态方法 <br>List GetCheckedDataKey(GridView gv, int columnIndex) <br>List GetCheckedDataKey(GridView gv, string checkboxId)<br><br>5、固定指定行、指定列,根据RowType固定行,根据RowState固定行 <br>使用方法(设置FixRowColumn复合属性): <br>FixRowType - 需要固定的行的RowType(用逗号“,”分隔) <br>FixRowState - 需要固定的行的RowState(用逗号“,”分隔) <br>FixRows - 需要固定的行的索引(用逗号“,”分隔) <br>FixColumns - 需要固定的列的索引(用逗号“,”分隔) <br>TableWidth - 表格的宽度 <br>TableHeight - 表格的高度<br><br>6、响应行的单击事件和双击事件,并在服务端处理 <br>使用方法(设置属性): <br>BoundRowClickCommandName - 行的单击事件需要绑定的CommandName <br>BoundRowDoubleClickCommandName - 行的双击事件需要绑定的CommandName<br><br>7、行的指定复选框选的时候改变该行的样式,行的指定复选框取消选的时候恢复该行的样式 <br>使用方法(设置CheckedRowCssClass复合属性): <br>CheckBoxID - 模板列 数据行的复选框ID <br>CssClass - 选的行的 CSS 类名<br><br>8、导出数据源的数据为Excel、Word或Text(应保证数据源的类型为DataTable或DataSet) <br>使用方法: <br>为SmartGridView添加的方法<br>Export(string fileName)<br>Export(string fileName, ExportFormat exportFormat)<br>Export(string fileName, ExportFormat exportFormat, Encoding encoding)<br>Export(string fileName, int[] columnIndexList, ExportFormat exportFormat, Encoding encoding)<br>Export(string fileName, int[] columnIndexList, string[] headers, ExportFormat exportFormat, Encoding encoding)<br><br>9、给数据行增加右键菜单,响应服务端事件或超级链接 <br>使用方法(设置ContextMenus集合属性): <br>Text - 菜单的文本内容 <br>BoundCommandName - 需要绑定的CommandName <br>NavigateUrl - 链接的URL <br>Target - 链接的目标窗口或框架 <br>SmartGridView的属性ContextMenuCssClass - 右键菜单的级联样式表 CSS 类名(右键菜单的结构div ul li a)<br><br>10、自定义分页样式。显示总记录数、每页记录数、当前页数、总页数、首页、上一页、下一页、末页和分页按钮 <br>使用方法(设置CustomPagerSettings复合属性): <br>PagingMode - 自定义分页的显示模式 <br>TextFormat - 自定义分页的文本显示样式(四个占位符:{0}-每页显示记录数;{1}-总记录数;{2}-当前页数;{3}-总页数)<br><br>11、合并指定列的相邻且内容相同的单元格<br>使用方法(设置属性): <br>MergeCells - 需要合并单元格的列的索引(用逗号“,”分隔)<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值