Ouvrir une url sur un évenement onclick

cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 décembre 2004 - 7 juil. 2004 à 11:06
cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 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 ?

Merci

10 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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

Cyril
0
cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 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 :

<cc1:ButtonUniqueid="ButtonUnique1" runat="server" onclick= ????? isoneclick="true" />

Bastien30
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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

End Class

apres dans l'aspx tu auras juste à ecrire :

<cc1:Rollbutton id="RB1" runat="server" NavigateUrl="page.aspx"/>

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

@+

Cyril
0
cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 décembre 2004
12 juil. 2004 à 18:28
ca ne marche pas

j'ai codé de la maniere suivante :
writer.AddAttribute("onClick", "javascript:window.href = ' " & Me.NavigateUrl & " ';")

aucun résultat (le fait de mettre des cotes ou des guillemets devant la variable ne change rien j'ai essayé)

j'ai ensuite essayé :
writer.AddAttribute("onClick", "javascript:window.open('" & Me.NavigateUrl & "','self');")

la ca marche...mais dans une nouvelle fenetre malgré le self !

Je craque lol

seb
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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

@+

Cyril
0
cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 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

<STA:RollButton id="button2" onclick="go" runat="server"></STA:RollButton>

sub go(sender As Object, e As System.Web.UI.ImageClickEventArgs)
HttpContext.Current.Response.Redirect("http://www.free.fr")
end sub

:)
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 juil. 2004 à 20:08
a partir de la tu dois pouvoir mettre en url dynamique

je te donne l'idée, faudrais vérifier avec l'intelisens de VS.net pour vérifer les propriétés mais en gros :

<STA:RollButton id="button2" onclick="go" runat="server" Argument="http://tonurl.com"></STA:RollButton>

ensuite tu vas te servir de la variable e

sub go(sender As Object, e As System.Web.UI.ImageClickEventArgs)
HttpContext.Current.Response.Redirect(e.EventArg)
end sub

Si t'as pas VS.net dis le moi et je verifierais les propriétés car je doute que ce que j'ai mis soit bon

j'espere t'avoir aidé

@+

Cyril
0
cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 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...

@+
Seb
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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

<STA:RollButton id="button2" onclick="go" runat="server" CommandArgument="http://tonurl.com"/>

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 :

sub page_load(...)

button2.CommandArgument = "http://url"

end sub

J'espere que ce petit bout de code t'aidera :)

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

@+

Cyril
0
cs_bastien30 Messages postés 21 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 18 décembre 2004
14 juil. 2004 à 14:53
ok j'ai essayé, impeccable.Merci :)

C vrai que sans VS.NET c'est parfois délicat, j'espère qu'ils ne vont pas trop tarder a me l'envoyer, je l'ai commandé la semaine dernière

@ +

Seb
0
Rejoignez-nous