Question

J'ai un bouton dans une grille que j'ai créé un programme. Le bouton édite des données dans un tableau à l'aide des données dans une colonne cachée de la grille que le bouton est. Normalement, j'envoie un champ masqué les données de ligne à l'aide de javascript OnClientClick du bouton puis effectuez les modifications à la base de données à l'aide de ce champ caché. Mais il doit y avoir un moyen d'envoyer le AddHandler du bouton un paramètre. Voici le code que je dois préciser ....

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

voici mon ADDHANDLER avec son délégué:

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

Comment puis-je envoyer ce gestionnaire un paramètre?

Était-ce utile?

La solution 3

Comme il était dans une grille je viens d'utiliser la commande de la ligne à la place. Et lorsque la commande ligne est utilisée, vous pouvez envoyer un commandname et un CommandArgument. Je passais mon paramètre comme argument.

 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;")

Voici le RowCommand:

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

Autres conseils

Par convention, tous les gestionnaires d'événements acceptent deux paramètres: l'expéditeur, et les EventArgs. Si vous avez besoin d'envoyer des informations personnalisées aux auditeurs, créer une nouvelle classe qui hérite de EventArgs et contient les informations que vous avez besoin de communiquer.

Consultez cet article sur CodeProject qui vous montre comment faire .

Réponse courte: non. Où voulez-vous envoyer? Vous avez deux paramètres.

réponse plus longue: expéditeur est le contrôle qui a envoyé l'événement. Dans ce cas, il sera le contrôle de votre btnEdit. Peut-être que cela vous aidera.

Si vous ne voulez pas utiliser le « défaut » / paramètres déjà définis, vous pouvez créer vos propres événements.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top