cs_bastien30
Messages postés21Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention18 décembre 2004
-
7 juil. 2004 à 11:06
cs_bastien30
Messages postés21Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention18 décembre 2004
-
14 juil. 2004 à 14:53
J'ai créé un classe Rollbutton ayant héritant de ImageButton
Comme on ne peut faire hériter une classe que d1 seule autre classe, je souhaiterais savoir comment créer une propriété NavigateUrl qui serait activée lors d'un évenement Onclick ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 7 juil. 2004 à 17:17
tu dois surcharger la methode AddAttributesToRender
j'ai pas le temps maintenant, mais il me semble que j'ai deja posté des exemples sur ce site.
si tu ne trouve pas fais le moi savoir, et j'essaierais de trouver le temps pour t'expliquer
cs_bastien30
Messages postés21Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention18 décembre 2004 8 juil. 2004 à 12:19
Ok j'ai pigé ton code, en fait tu déclare tous les évenements possibles pour un bouton en faisant ensuite appel a un procédure qui simule du javascript.
Par contre j'ai rien pigé concernant l'appel de la methode onclick !!! :) Comment dois je m'en servir si je reprend ton exemple :
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 8 juil. 2004 à 13:43
essaye ca :
Public Class RollButton
Inherits System.Web.UI.WebControls.ImageButton
Private _NavigateUrl As String
Public Property NavigateUrl() As String
Get
Return _NavigateUrl
End Get
Set(ByVal Value As String)
_NavigateUrl = Value
End Set
End Property
Protected Overrides Sub AddAttributesToRender(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.AddAttribute("Onclick", "javascript:location.href =""" & _NavigateUrl & """;")
End Sub
Ainsi si tu cliques sur le controle tu ira sur page.aspx
attention je ne suis pas sur de la syntaxe javascript, je m'en rappellais plus, et j'ai mis ca un peu au hasard, donc si ca marche pas, change javascript:location.href = NavigateUrl par un autre code javascript
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 12 juil. 2004 à 21:08
l'erreur provient donc du javascript ?
si c'est le cas je peux pas faire grand chose pour toi, je connais pas assez bien ce langage, mais si ca peut t'aider, tu peux faire une fonction javascript :
writer.AddAttribute("onClick", "javascript:tafunction('" & Me.NavigateUrl & "');")
dans la function javscript
function tafunction(url)
{
window.href(url)
}
ou un truc du genre. pour rajouter du code javascript, tu peux directement l'ecrire dans le render, ou sinon tu peux ecrire une seule foispour toute ta function javascript meme si tu fais appel plusieurs fois au controle, il faut utiliser la méthode Page.jesaispaskoi (page.Startupscript(key as string, script as string) je crois)
si tu utilises cette derniere méthode, je peux t'aider
cs_bastien30
Messages postés21Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention18 décembre 2004 13 juil. 2004 à 16:29
je n'y arrive pas, j'ai par contre trouvé la méthode HttpContext.Current.Response.Redirect pour changer l'url mais je n'arrive pas a l'utiliser dans la classe de mon bouton
du coup pour l'instant je l'utilise dans une procedure Go appelée sur onclick de mon bouton mais l'url n'est pas dynamique
cs_bastien30
Messages postés21Date d'inscriptionjeudi 24 juin 2004StatutMembreDernière intervention18 décembre 2004 13 juil. 2004 à 20:48
Non je n'ai pas VS.NET (j'ai commandé la version éval)
Ca m'interesserai oui de connaitre la syntaxe à l'occase :)
Sinon, j'ai ENFIN réussi a m'en sortir de cette manière :
Public sub LoadUrl(sender As Object, e As System.Web.UI.ImageClickEventArgs)
dim MyButton as string = Ctype(sender, Control).ID
Select Case MyButton
Case "Button1"
Response.Redirect(ResolveUrl("menu1/index.aspx"))
Case "Button2"
Response.Redirect(ResolveUrl("menu2/index.aspx"))
etc...etc..
end Select
end sub
Merci pour ta patience, en esperant pouvoir te dépanner un de ces jours...
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 13 juil. 2004 à 23:23
j'ai regardé le code avec un bouton, je viens de voir que s'en était pas un, je te mettrais les modifs à faire en dessous. donc voici le code pour un bouton :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim s As String = CType(sender, Button).CommandArgument
End Sub
pour ton cas, je viens de vérifier, ImageButton posséde la propriété CommandArgument, et comme ton controle dérive de ImageButton, il contient aussi commandArgument
Public sub LoadUrl(sender As Object, e As System.Web.UI.ImageClickEventArgs)
HttpContext.Current.Response.Redirect( CType(sender, RollButton ).CommandArgument)
End Sub
A noter que tu as aussi la propriété CommandName qui fonctionne exactement de la meme maniere
tu peux aussi modifier ces propriétés par le code :
Pour VS.net, tu as bien fait de demander une version d'éval, car dans la majorité des cas c'est indispensable, car c'est impossible de connaitre tout les types de la framework, et pour ca l'intellisens c'est le pied