1

我在以编程方式创建的网格中有一个按钮。该按钮使用该按钮所在的网格的隐藏列中的数据来编辑表中的一些数据。通常我使用按钮的 javascript onclientclick 将行数据发送到隐藏字段,然后使用该隐藏字段对数据库进行更改。但是必须有一种方法可以向按钮的 addhandler 发送参数。这是我必须澄清的代码....

Dim btnedit As New ImageButton
    AddHandler btnedit.Click, AddressOf btnedit_Click
    btnedit.ImageUrl = "\images\bttnEditMini.gif"

If e.Row.RowType <> DataControlRowType.Header And e.Row.RowType <> DataControlRowType.Footer Then
        e.Row.Cells(3).Controls.Add(btnedit)
End If

这是我的 Addhandler 及其代表:

Public Delegate Sub ImageClickEventHandler(ByVal sender As Object, ByVal e As ImageClickEventArgs)
Sub btnedit_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
//programming stuff
End Sub

我如何向这个处理程序发送一个参数?

4

4 回答 4

3

按照惯例,所有事件处理程序都接受两个参数:发送者和 EventArgs。如果您需要向侦听器发送自定义信息,请创建一个继承自 EventArgs 并包含您需要进行通信的信息的新类。

查看CodeProject 上的这篇文章,向您展示如何执行此操作。

于 2009-06-02T18:52:08.207 回答
1

简短的回答:没有。你会把它寄到哪里?你有两个参数。

更长的答案:sender是发送事件的控件。在这种情况下,它将是您的 btnEdit 控件。也许这会对你有所帮助。

于 2009-06-02T18:09:16.740 回答
0

因为它在网格中,所以我只使用了 row 命令。当使用 Row 命令时,您可以向其发送命令名和命令参数。我将我的参数作为参数传递。

 GridView1.Rows(i).Cells(3).Controls.Add(btndel)
            btndel.ImageUrl = "\images\bttnDelete.gif"
            btndel.ToolTip = "This will delete the Selected Assignment"
            btndel.CommandName = "destroy"
            btndel.CommandArgument = GridView1.Rows(i).Cells(0).Text
            btndel.Attributes.Add("onclick", "javascript: if(confirm('Are you sure you want to delete this Department Cost Days Assignment?')==false) return false;")

这是行命令:

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
    If e.CommandName = "destroy" Then 'used destroy because Delete command was prohibited.
       Call Connection()
        Dbcmd.CommandText = "Delete from table where condition = '" & e.CommandArgument & "'"
        Dbcmd.ExecuteNonQuery()
        Dbconn.Close()
        Dbconn.Dispose()
    End If
于 2009-06-02T21:17:42.017 回答
0

如果您不想使用“默认”/已定义的参数,您可以创建自己的事件。

于 2009-06-03T18:15:46.357 回答