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


 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 DEV 的 GridView 控件修改数据,需要使用以下步骤: 1. 在 ASP.NET 页面,将 GridView 控件添加到页面,并设置数据源。 2. 将 GridView 控件的属性 AutoGenerateEditButton 设置为 true,以便在表格显示编辑按钮。 3. 在 GridView 控件的编辑事件编写代码,以便在用户单击编辑按钮时,将表格行切换到编辑模式。 4. 在 GridView 控件的更新事件编写代码,以便在用户更新数据后,将修改保存到数据源。 以下是一个示例代码: ``` <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AutoGenerateEditButton="True"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [Users]" UpdateCommand="UPDATE [Users] SET [Name] = @Name, [Email] = @Email WHERE [ID] = @ID"> <UpdateParameters> <asp:Parameter Name="Name" Type="String" /> <asp:Parameter Name="Email" Type="String" /> <asp:Parameter Name="ID" Type="Int32" /> </UpdateParameters> </asp:SqlDataSource> ``` 在代码,我们使用 SqlDataSource 控件作为数据源,并将 UpdateCommand 属性设置为更新数据的 SQL 语句。在 GridView 控件的更新事件,我们通过 UpdateParameters 属性将需要更新的参数传递给 SQL 语句。 你可以根据自己的需求修改以上代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值