Pb Menu

Le
Jean Claude
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle fenetre,
avec le code ci-dessous, il me faut cliquer deux fois pour obtenir cela, le
premier clic affiche la page en remplacement de la première. Pouvez-vous me
dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #12220071
Problème de logique. La modification de l'objet menu aura pour effet de dire
comment le menu sera généré dans la NOUVELLE page actuellement en cours de
construction d'où la nécessité de cliquer deux fois pour obtenir le
comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le serveur ce
qui génère du code HTML qui repostera des demandes vers le serveur sur
demande de l'utilisateur. Ici modifier le code HTML de la page *en cours de
génération* ne sert à rien. C'est le code HTML de la page *précédente* qui a
été utilisé pour relancer une demande et ce code HTML n'incluant pas le
target blank on n'ouvre effectivement pas la fenêtre dans une nouvelle
fenêtre ce coup-ci... Selon la logique de fonctionnement voulue (je vois que
le nom de la page est également en dur ??) le plus simple serait sans doute
de mettre les "targets" (de même que le NavigateUrl ?) dans les balises
asp:menuitem concernées ce qui pourrait éventuellement rendre totalement
inutile de gérer cet évènement.

--
Patrice

"Jean Claude" news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle fenetre,
avec le code ci-dessous, il me faut cliquer deux fois pour obtenir cela,
le premier clic affiche la page en remplacement de la première.
Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude













Jean Claude
Le #12220051
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?) dans les
balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai mis en
dur pour tester le menu

Cordialement
JClaude

"Patrice"
Problème de logique. La modification de l'objet menu aura pour effet de
dire comment le menu sera généré dans la NOUVELLE page actuellement en
cours de construction d'où la nécessité de cliquer deux fois pour obtenir
le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le serveur
ce qui génère du code HTML qui repostera des demandes vers le serveur sur
demande de l'utilisateur. Ici modifier le code HTML de la page *en cours
de génération* ne sert à rien. C'est le code HTML de la page *précédente*
qui a été utilisé pour relancer une demande et ce code HTML n'incluant pas
le target blank on n'ouvre effectivement pas la fenêtre dans une nouvelle
fenêtre ce coup-ci... Selon la logique de fonctionnement voulue (je vois
que le nom de la page est également en dur ??) le plus simple serait sans
doute de mettre les "targets" (de même que le NavigateUrl ?) dans les
balises asp:menuitem concernées ce qui pourrait éventuellement rendre
totalement inutile de gérer cet évènement.

--
Patrice

"Jean Claude" news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle fenetre,
avec le code ci-dessous, il me faut cliquer deux fois pour obtenir cela,
le premier clic affiche la page en remplacement de la première.
Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude

















Patrice
Le #12220041
Pour l'instant, je ne comprends pas le principe de fonctionnement de ce
menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ? Même dans
ce cas, rien n'empêche de mettre une propriété target sur chaque menuitem
créé dynamiquement. De même, la valeur de Session("NewPage") pourrait sans
doute être utilisée pour *construire* le menu plutôt que lors de la réaction
au clic (je vois mal d'ailleurs comment le menu fonctionne, le
session("newpage") étant toujours une valeur unique donc quel que soit
l'option de menu cliqué l'utilisateur ira toujours sur la même page ???) Si
en réaction au clic tu prévois ensuite de tester quel est l'élément cliqué
pour aller sur telle ou telle url, il est peut-être aussi simple de définir
ces urls lors de la création dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée dynamiquement,
cela pourrait être un tbalau ou quoi que ce soit d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les informations
nécessaires à la navigation vers la page suivante sont connues sans avoir à
gérer l'évènement concernant le clic (accessoirement le groupe ASP.NET
serait peut-être plus spécifique à ce problème).

--
Patrice

"Jean Claude" news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?) dans
les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai mis
en dur pour tester le menu

Cordialement
JClaude

"Patrice"
Problème de logique. La modification de l'objet menu aura pour effet de
dire comment le menu sera généré dans la NOUVELLE page actuellement en
cours de construction d'où la nécessité de cliquer deux fois pour obtenir
le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le serveur
ce qui génère du code HTML qui repostera des demandes vers le serveur sur
demande de l'utilisateur. Ici modifier le code HTML de la page *en cours
de génération* ne sert à rien. C'est le code HTML de la page *précédente*
qui a été utilisé pour relancer une demande et ce code HTML n'incluant
pas le target blank on n'ouvre effectivement pas la fenêtre dans une
nouvelle fenêtre ce coup-ci... Selon la logique de fonctionnement voulue
(je vois que le nom de la page est également en dur ??) le plus simple
serait sans doute de mettre les "targets" (de même que le NavigateUrl ?)
dans les balises asp:menuitem concernées ce qui pourrait éventuellement
rendre totalement inutile de gérer cet évènement.

--
Patrice

"Jean Claude" news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle fenetre,
avec le code ci-dessous, il me faut cliquer deux fois pour obtenir cela,
le premier clic affiche la page en remplacement de la première.
Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude





















Jean Claude
Le #12220031
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis qu'un
Item, mais il y en aura plusieurs, c'est cet Item qui me pose problème). le
clic sur le menu selon l'internaute affiche une page type definie par
session("page"), et il y a trois possibilités de page type, et toujours
selon l'internaute le remplissage de la page se fait dynamiquement par une
requete sur une base de données Access.

Cordialement
J Claude
"Patrice" %
Pour l'instant, je ne comprends pas le principe de fonctionnement de ce
menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ? Même
dans ce cas, rien n'empêche de mettre une propriété target sur chaque
menuitem créé dynamiquement. De même, la valeur de Session("NewPage")
pourrait sans doute être utilisée pour *construire* le menu plutôt que
lors de la réaction au clic (je vois mal d'ailleurs comment le menu
fonctionne, le session("newpage") étant toujours une valeur unique donc
quel que soit l'option de menu cliqué l'utilisateur ira toujours sur la
même page ???) Si en réaction au clic tu prévois ensuite de tester quel
est l'élément cliqué pour aller sur telle ou telle url, il est peut-être
aussi simple de définir ces urls lors de la création dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les informations
nécessaires à la navigation vers la page suivante sont connues sans avoir
à gérer l'évènement concernant le clic (accessoirement le groupe ASP.NET
serait peut-être plus spécifique à ce problème).

--
Patrice

"Jean Claude" news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?) dans
les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai mis
en dur pour tester le menu

Cordialement
JClaude

"Patrice"
Problème de logique. La modification de l'objet menu aura pour effet de
dire comment le menu sera généré dans la NOUVELLE page actuellement en
cours de construction d'où la nécessité de cliquer deux fois pour
obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers le
serveur sur demande de l'utilisateur. Ici modifier le code HTML de la
page *en cours de génération* ne sert à rien. C'est le code HTML de la
page *précédente* qui a été utilisé pour relancer une demande et ce code
HTML n'incluant pas le target blank on n'ouvre effectivement pas la
fenêtre dans une nouvelle fenêtre ce coup-ci... Selon la logique de
fonctionnement voulue (je vois que le nom de la page est également en
dur ??) le plus simple serait sans doute de mettre les "targets" (de
même que le NavigateUrl ?) dans les balises asp:menuitem concernées ce
qui pourrait éventuellement rendre totalement inutile de gérer cet
évènement.

--
Patrice

"Jean Claude" de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois pour
obtenir cela, le premier clic affiche la page en remplacement de la
première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude

























Patrice
Le #12220021
Ok, je ferais donc tout simplement qq chose comme :

Menu1.MenuItems(0).NavigateUrl=Session("Page") dans le Page_Load pour
définir quelle est l'url à utiliser, la balise menuitem présente dans la
page ASPX utilisant déjà le bon "target" ce qui ouvrira la page demandée
dans une nouvelle fenêtre.

Cela devrait suffire à obtenir l'effet que tu veux. Le gérer dans
l'évènement click serait beaucoup plus compliqué voire impossible :
- seul le navigateur est susceptible d'ouvrir une page dans une nouvelle
fenêtre. Si ce point n'est pas déjà en place au traitement de ce click, cela
rend les choses bien compliquées
- il faudrait faire un redirect toi-même vers la page voulue

Avec la première approche, cela me semble plus directe. On se contente
d'indiquer au premier élément de menu, l'url de destination. Le mécanisme
habituel du menu permet alors d'obtenir le résultat voulu.

---
Patrice

"Jean Claude" news: 47832a60$0$847$
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis qu'un
Item, mais il y en aura plusieurs, c'est cet Item qui me pose problème).
le clic sur le menu selon l'internaute affiche une page type definie par
session("page"), et il y a trois possibilités de page type, et toujours
selon l'internaute le remplissage de la page se fait dynamiquement par une
requete sur une base de données Access.

Cordialement
J Claude
"Patrice" %
Pour l'instant, je ne comprends pas le principe de fonctionnement de ce
menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ? Même
dans ce cas, rien n'empêche de mettre une propriété target sur chaque
menuitem créé dynamiquement. De même, la valeur de Session("NewPage")
pourrait sans doute être utilisée pour *construire* le menu plutôt que
lors de la réaction au clic (je vois mal d'ailleurs comment le menu
fonctionne, le session("newpage") étant toujours une valeur unique donc
quel que soit l'option de menu cliqué l'utilisateur ira toujours sur la
même page ???) Si en réaction au clic tu prévois ensuite de tester quel
est l'élément cliqué pour aller sur telle ou telle url, il est peut-être
aussi simple de définir ces urls lors de la création dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les informations
nécessaires à la navigation vers la page suivante sont connues sans avoir
à gérer l'évènement concernant le clic (accessoirement le groupe ASP.NET
serait peut-être plus spécifique à ce problème).

--
Patrice

"Jean Claude" news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?) dans
les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai mis
en dur pour tester le menu

Cordialement
JClaude

"Patrice"
Problème de logique. La modification de l'objet menu aura pour effet de
dire comment le menu sera généré dans la NOUVELLE page actuellement en
cours de construction d'où la nécessité de cliquer deux fois pour
obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers le
serveur sur demande de l'utilisateur. Ici modifier le code HTML de la
page *en cours de génération* ne sert à rien. C'est le code HTML de la
page *précédente* qui a été utilisé pour relancer une demande et ce
code HTML n'incluant pas le target blank on n'ouvre effectivement pas
la fenêtre dans une nouvelle fenêtre ce coup-ci... Selon la logique de
fonctionnement voulue (je vois que le nom de la page est également en
dur ??) le plus simple serait sans doute de mettre les "targets" (de
même que le NavigateUrl ?) dans les balises asp:menuitem concernées ce
qui pourrait éventuellement rendre totalement inutile de gérer cet
évènement.

--
Patrice

"Jean Claude" de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois pour
obtenir cela, le premier clic affiche la page en remplacement de la
première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude





























Jean Claude
Le #12219981
Bonjour Patrice

C'est pas possible le code ne veut pas prendre MenuItems(0)

Cordialement
Jean Claude



"Patrice" %
Ok, je ferais donc tout simplement qq chose comme :

Menu1.MenuItems(0).NavigateUrl=Session("Page") dans le Page_Load pour
définir quelle est l'url à utiliser, la balise menuitem présente dans la
page ASPX utilisant déjà le bon "target" ce qui ouvrira la page demandée
dans une nouvelle fenêtre.

Cela devrait suffire à obtenir l'effet que tu veux. Le gérer dans
l'évènement click serait beaucoup plus compliqué voire impossible :
- seul le navigateur est susceptible d'ouvrir une page dans une nouvelle
fenêtre. Si ce point n'est pas déjà en place au traitement de ce click,
cela rend les choses bien compliquées
- il faudrait faire un redirect toi-même vers la page voulue

Avec la première approche, cela me semble plus directe. On se contente
d'indiquer au premier élément de menu, l'url de destination. Le mécanisme
habituel du menu permet alors d'obtenir le résultat voulu.

---
Patrice

"Jean Claude" news: 47832a60$0$847$
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis
qu'un Item, mais il y en aura plusieurs, c'est cet Item qui me pose
problème). le clic sur le menu selon l'internaute affiche une page type
definie par session("page"), et il y a trois possibilités de page type,
et toujours selon l'internaute le remplissage de la page se fait
dynamiquement par une requete sur une base de données Access.

Cordialement
J Claude
"Patrice" %
Pour l'instant, je ne comprends pas le principe de fonctionnement de ce
menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ? Même
dans ce cas, rien n'empêche de mettre une propriété target sur chaque
menuitem créé dynamiquement. De même, la valeur de Session("NewPage")
pourrait sans doute être utilisée pour *construire* le menu plutôt que
lors de la réaction au clic (je vois mal d'ailleurs comment le menu
fonctionne, le session("newpage") étant toujours une valeur unique donc
quel que soit l'option de menu cliqué l'utilisateur ira toujours sur la
même page ???) Si en réaction au clic tu prévois ensuite de tester quel
est l'élément cliqué pour aller sur telle ou telle url, il est peut-être
aussi simple de définir ces urls lors de la création dynamique du
menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les informations
nécessaires à la navigation vers la page suivante sont connues sans
avoir à gérer l'évènement concernant le clic (accessoirement le groupe
ASP.NET serait peut-être plus spécifique à ce problème).

--
Patrice

"Jean Claude" de news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?)
dans les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai
mis en dur pour tester le menu

Cordialement
JClaude

"Patrice" news:
Problème de logique. La modification de l'objet menu aura pour effet
de dire comment le menu sera généré dans la NOUVELLE page actuellement
en cours de construction d'où la nécessité de cliquer deux fois pour
obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers le
serveur sur demande de l'utilisateur. Ici modifier le code HTML de la
page *en cours de génération* ne sert à rien. C'est le code HTML de la
page *précédente* qui a été utilisé pour relancer une demande et ce
code HTML n'incluant pas le target blank on n'ouvre effectivement pas
la fenêtre dans une nouvelle fenêtre ce coup-ci... Selon la logique de
fonctionnement voulue (je vois que le nom de la page est également en
dur ??) le plus simple serait sans doute de mettre les "targets" (de
même que le NavigateUrl ?) dans les balises asp:menuitem concernées ce
qui pourrait éventuellement rendre totalement inutile de gérer cet
évènement.

--
Patrice

"Jean Claude" de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois pour
obtenir cela, le premier clic affiche la page en remplacement de la
première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude

































Patrice
Le #12219971
Au temps pour moi c'est Items dans le code (n'hésite pas à jeter un oeil
dans Intellisense). Exemple :
- le menu est donc défini dans la page via :

<asp:Menu ID="Menu1" runat="server">
<Items>
<asp:MenuItem Target="_blank" Text="Page 1"/>
<asp:MenuItem Target="_blank" Text="Page 2"/>
<asp:MenuItem Target="_blank" Text="Page 3"/>
</Items>
</asp:Menu>

Le target est djéà mis mais comme la page exacte dépendra de l'utilisateur
connecté (voire de l'état actuel de l'appli ?) je ne mets pas les adresses
en dur...

Dans le code (Page_Load) cela donne :
Menu1.Items(0).NavigateUrl = "a.aspx"
Menu1.Items(1).NavigateUrl = "b.aspx"
Menu1.Items(2).NavigateUrl = "c.aspx"

A l'éxécution j'ai bien des liens vers les pages a, b,c qui s'ouvrent dans
une nouvelle fenêtre. Ton code utiliserait bien sûr les variables de session
(selon la façon dont tu détermines les pages que l'utilsiateur verra il est
également possible de lier le menu à une source de données mis bon faisons
déjà au plus simple pour l'instant).

--
Patrice

"Jean Claude" news: 47862e04$0$878$
Bonjour Patrice

C'est pas possible le code ne veut pas prendre MenuItems(0)

Cordialement
Jean Claude



"Patrice" %
Ok, je ferais donc tout simplement qq chose comme :

Menu1.MenuItems(0).NavigateUrl=Session("Page") dans le Page_Load pour
définir quelle est l'url à utiliser, la balise menuitem présente dans la
page ASPX utilisant déjà le bon "target" ce qui ouvrira la page demandée
dans une nouvelle fenêtre.

Cela devrait suffire à obtenir l'effet que tu veux. Le gérer dans
l'évènement click serait beaucoup plus compliqué voire impossible :
- seul le navigateur est susceptible d'ouvrir une page dans une nouvelle
fenêtre. Si ce point n'est pas déjà en place au traitement de ce click,
cela rend les choses bien compliquées
- il faudrait faire un redirect toi-même vers la page voulue

Avec la première approche, cela me semble plus directe. On se contente
d'indiquer au premier élément de menu, l'url de destination. Le mécanisme
habituel du menu permet alors d'obtenir le résultat voulu.

---
Patrice

"Jean Claude" news: 47832a60$0$847$
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis
qu'un Item, mais il y en aura plusieurs, c'est cet Item qui me pose
problème). le clic sur le menu selon l'internaute affiche une page type
definie par session("page"), et il y a trois possibilités de page type,
et toujours selon l'internaute le remplissage de la page se fait
dynamiquement par une requete sur une base de données Access.

Cordialement
J Claude
"Patrice" %
Pour l'instant, je ne comprends pas le principe de fonctionnement de ce
menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ? Même
dans ce cas, rien n'empêche de mettre une propriété target sur chaque
menuitem créé dynamiquement. De même, la valeur de Session("NewPage")
pourrait sans doute être utilisée pour *construire* le menu plutôt que
lors de la réaction au clic (je vois mal d'ailleurs comment le menu
fonctionne, le session("newpage") étant toujours une valeur unique donc
quel que soit l'option de menu cliqué l'utilisateur ira toujours sur la
même page ???) Si en réaction au clic tu prévois ensuite de tester quel
est l'élément cliqué pour aller sur telle ou telle url, il est
peut-être aussi simple de définir ces urls lors de la création
dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les
informations nécessaires à la navigation vers la page suivante sont
connues sans avoir à gérer l'évènement concernant le clic
(accessoirement le groupe ASP.NET serait peut-être plus spécifique à ce
problème).

--
Patrice

"Jean Claude" de news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?)
dans les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai
mis en dur pour tester le menu

Cordialement
JClaude

"Patrice" news:
Problème de logique. La modification de l'objet menu aura pour effet
de dire comment le menu sera généré dans la NOUVELLE page
actuellement en cours de construction d'où la nécessité de cliquer
deux fois pour obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers le
serveur sur demande de l'utilisateur. Ici modifier le code HTML de la
page *en cours de génération* ne sert à rien. C'est le code HTML de
la page *précédente* qui a été utilisé pour relancer une demande et
ce code HTML n'incluant pas le target blank on n'ouvre effectivement
pas la fenêtre dans une nouvelle fenêtre ce coup-ci... Selon la
logique de fonctionnement voulue (je vois que le nom de la page est
également en dur ??) le plus simple serait sans doute de mettre les
"targets" (de même que le NavigateUrl ?) dans les balises
asp:menuitem concernées ce qui pourrait éventuellement rendre
totalement inutile de gérer cet évènement.

--
Patrice

"Jean Claude" message de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois pour
obtenir cela, le premier clic affiche la page en remplacement de la
première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude





































Jean Claude
Le #12215071
Bonjour Patrice



Merci pour ta réponse, c'est OK



J'a deux autres problèmes peux-tu m'aider à trouver la réponse ?



-1- je veux afficher 6 images sur une page après les avoir redimensionnées,
j'ai créé une procédure pour cela :



Sub Dessineimage()

'chargement de l'image d'origine

Dim chemin As String = ""

chemin = Session("Rep") & Session("Image")

Dim newImage As Drawing.Image =
System.Drawing.Image.FromFile(Server.MapPath(chemin), True)

Image1.Width = Unit.Pixel(newImage.Width)

Image1.Height = Unit.Pixel(newImage.Height)

Dim lahauteur As Integer = 0

Dim lalargeur As Integer = 0

lahauteur = Image1.Height.Value

lalargeur = Image1.Width.Value

'taille maxi de la nouvelle image

Dim maxHeight As Integer = 150

'Nouvelles dimensions d'affichage

Image1.ImageUrl = "AR2E18M0R02/" & Session("Image")

Image1.Height = lahauteur * (maxHeight / lahauteur)

Image1.Width = lalargeur * (maxHeight / lahauteur)

End Sub



Pour utiliser cette procédure pour chaque image je voulais écrire
Image(I).Width et le code ne l'accepte pas



-2- j'ai créé un GridView avec une colonne avec HyperLinkField pour pouvoir
afficher une page dans une nouvelle fenetre (_target= ''blank'') après un
clic



j'ai besoin d'ajouter à l' HyperLinkField un OnCommand pour créer une
procédure LinkButton_Command car j'ai besoin d'effectuer une requete avant d'afficher
la page (la page étant variable et le code n'accepte pas OnCommand



Merci pour tes réponses



Cordialement

Jean Claude



"Patrice"
Au temps pour moi c'est Items dans le code (n'hésite pas à jeter un oeil
dans Intellisense). Exemple :
- le menu est donc défini dans la page via :

<asp:Menu ID="Menu1" runat="server">
<Items>
<asp:MenuItem Target="_blank" Text="Page 1"/>
<asp:MenuItem Target="_blank" Text="Page 2"/>
<asp:MenuItem Target="_blank" Text="Page 3"/>
</Items>
</asp:Menu>

Le target est djéà mis mais comme la page exacte dépendra de l'utilisateur
connecté (voire de l'état actuel de l'appli ?) je ne mets pas les adresses
en dur...

Dans le code (Page_Load) cela donne :
Menu1.Items(0).NavigateUrl = "a.aspx"
Menu1.Items(1).NavigateUrl = "b.aspx"
Menu1.Items(2).NavigateUrl = "c.aspx"

A l'éxécution j'ai bien des liens vers les pages a, b,c qui s'ouvrent dans
une nouvelle fenêtre. Ton code utiliserait bien sûr les variables de
session (selon la façon dont tu détermines les pages que l'utilsiateur
verra il est également possible de lier le menu à une source de données
mis bon faisons déjà au plus simple pour l'instant).

--
Patrice

"Jean Claude" news: 47862e04$0$878$
Bonjour Patrice

C'est pas possible le code ne veut pas prendre MenuItems(0)

Cordialement
Jean Claude



"Patrice" %
Ok, je ferais donc tout simplement qq chose comme :

Menu1.MenuItems(0).NavigateUrl=Session("Page") dans le Page_Load pour
définir quelle est l'url à utiliser, la balise menuitem présente dans la
page ASPX utilisant déjà le bon "target" ce qui ouvrira la page demandée
dans une nouvelle fenêtre.

Cela devrait suffire à obtenir l'effet que tu veux. Le gérer dans
l'évènement click serait beaucoup plus compliqué voire impossible :
- seul le navigateur est susceptible d'ouvrir une page dans une nouvelle
fenêtre. Si ce point n'est pas déjà en place au traitement de ce click,
cela rend les choses bien compliquées
- il faudrait faire un redirect toi-même vers la page voulue

Avec la première approche, cela me semble plus directe. On se contente
d'indiquer au premier élément de menu, l'url de destination. Le
mécanisme habituel du menu permet alors d'obtenir le résultat voulu.

---
Patrice

"Jean Claude" de news: 47832a60$0$847$
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis
qu'un Item, mais il y en aura plusieurs, c'est cet Item qui me pose
problème). le clic sur le menu selon l'internaute affiche une page type
definie par session("page"), et il y a trois possibilités de page type,
et toujours selon l'internaute le remplissage de la page se fait
dynamiquement par une requete sur une base de données Access.

Cordialement
J Claude
"Patrice" news: %
Pour l'instant, je ne comprends pas le principe de fonctionnement de
ce menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ? Même
dans ce cas, rien n'empêche de mettre une propriété target sur chaque
menuitem créé dynamiquement. De même, la valeur de Session("NewPage")
pourrait sans doute être utilisée pour *construire* le menu plutôt que
lors de la réaction au clic (je vois mal d'ailleurs comment le menu
fonctionne, le session("newpage") étant toujours une valeur unique
donc quel que soit l'option de menu cliqué l'utilisateur ira toujours
sur la même page ???) Si en réaction au clic tu prévois ensuite de
tester quel est l'élément cliqué pour aller sur telle ou telle url, il
est peut-être aussi simple de définir ces urls lors de la création
dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit
d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les
informations nécessaires à la navigation vers la page suivante sont
connues sans avoir à gérer l'évènement concernant le clic
(accessoirement le groupe ASP.NET serait peut-être plus spécifique à
ce problème).

--
Patrice

"Jean Claude" de news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?)
dans les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai
mis en dur pour tester le menu

Cordialement
JClaude

"Patrice" news:
Problème de logique. La modification de l'objet menu aura pour effet
de dire comment le menu sera généré dans la NOUVELLE page
actuellement en cours de construction d'où la nécessité de cliquer
deux fois pour obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers
le serveur sur demande de l'utilisateur. Ici modifier le code HTML
de la page *en cours de génération* ne sert à rien. C'est le code
HTML de la page *précédente* qui a été utilisé pour relancer une
demande et ce code HTML n'incluant pas le target blank on n'ouvre
effectivement pas la fenêtre dans une nouvelle fenêtre ce coup-ci...
Selon la logique de fonctionnement voulue (je vois que le nom de la
page est également en dur ??) le plus simple serait sans doute de
mettre les "targets" (de même que le NavigateUrl ?) dans les balises
asp:menuitem concernées ce qui pourrait éventuellement rendre
totalement inutile de gérer cet évènement.

--
Patrice

"Jean Claude" message de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois pour
obtenir cela, le premier clic affiche la page en remplacement de la
première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude









































Patrice
Le #12215041
#1 Pour pouvoir le faire il faudrait que Image soit un tableau ? Si tu as
des contrôles disparates Image1, Image2, Image3 le mieux que tu puisses
faire serait qq chose comme :

For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Trouve le contrôle ImageX
' Traitement
Next

Chercher FindContriol pour des compléments...

Egalement le "retaillage" est bien sûr purement fait en terme de
présentation. Avec cette méthode, si le fichier de départ est voluminuex, il
sera toujours tout aussi volumineux même si il apparaitra en plus petit...

#2 Je dirais utilise alors un LinkButton au lieu d'un hyperlinkfield ?

Enfin, je pense que le mieux est tout de même d'ajouter tes questions en
tant que nouveau sujet de discussion pour que d'autres personnes opuissent
t'aider...

Eventuellement chaque question dans une nouvelle discussion pour que les
personnes puissent répondre séparemment à tes différents problèmes...

--
Patrice

"Jean Claude" news: 47871860$0$887$
Bonjour Patrice



Merci pour ta réponse, c'est OK



J'a deux autres problèmes peux-tu m'aider à trouver la réponse ?



-1- je veux afficher 6 images sur une page après les avoir
redimensionnées, j'ai créé une procédure pour cela :



Sub Dessineimage()

'chargement de l'image d'origine

Dim chemin As String = ""

chemin = Session("Rep") & Session("Image")

Dim newImage As Drawing.Image =
System.Drawing.Image.FromFile(Server.MapPath(chemin), True)

Image1.Width = Unit.Pixel(newImage.Width)

Image1.Height = Unit.Pixel(newImage.Height)

Dim lahauteur As Integer = 0

Dim lalargeur As Integer = 0

lahauteur = Image1.Height.Value

lalargeur = Image1.Width.Value

'taille maxi de la nouvelle image

Dim maxHeight As Integer = 150

'Nouvelles dimensions d'affichage

Image1.ImageUrl = "AR2E18M0R02/" & Session("Image")

Image1.Height = lahauteur * (maxHeight / lahauteur)

Image1.Width = lalargeur * (maxHeight / lahauteur)

End Sub



Pour utiliser cette procédure pour chaque image je voulais écrire
Image(I).Width et le code ne l'accepte pas



-2- j'ai créé un GridView avec une colonne avec HyperLinkField pour
pouvoir afficher une page dans une nouvelle fenetre (_target= ''blank'')
après un clic



j'ai besoin d'ajouter à l' HyperLinkField un OnCommand pour créer une
procédure LinkButton_Command car j'ai besoin d'effectuer une requete avant
d'afficher la page (la page étant variable et le code n'accepte pas
OnCommand



Merci pour tes réponses



Cordialement

Jean Claude



"Patrice"
Au temps pour moi c'est Items dans le code (n'hésite pas à jeter un oeil
dans Intellisense). Exemple :
- le menu est donc défini dans la page via :

<asp:Menu ID="Menu1" runat="server">
<Items>
<asp:MenuItem Target="_blank" Text="Page 1"/>
<asp:MenuItem Target="_blank" Text="Page 2"/>
<asp:MenuItem Target="_blank" Text="Page 3"/>
</Items>
</asp:Menu>

Le target est djéà mis mais comme la page exacte dépendra de
l'utilisateur connecté (voire de l'état actuel de l'appli ?) je ne mets
pas les adresses en dur...

Dans le code (Page_Load) cela donne :
Menu1.Items(0).NavigateUrl = "a.aspx"
Menu1.Items(1).NavigateUrl = "b.aspx"
Menu1.Items(2).NavigateUrl = "c.aspx"

A l'éxécution j'ai bien des liens vers les pages a, b,c qui s'ouvrent
dans une nouvelle fenêtre. Ton code utiliserait bien sûr les variables de
session (selon la façon dont tu détermines les pages que l'utilsiateur
verra il est également possible de lier le menu à une source de données
mis bon faisons déjà au plus simple pour l'instant).

--
Patrice

"Jean Claude" news: 47862e04$0$878$
Bonjour Patrice

C'est pas possible le code ne veut pas prendre MenuItems(0)

Cordialement
Jean Claude



"Patrice" %
Ok, je ferais donc tout simplement qq chose comme :

Menu1.MenuItems(0).NavigateUrl=Session("Page") dans le Page_Load pour
définir quelle est l'url à utiliser, la balise menuitem présente dans
la page ASPX utilisant déjà le bon "target" ce qui ouvrira la page
demandée dans une nouvelle fenêtre.

Cela devrait suffire à obtenir l'effet que tu veux. Le gérer dans
l'évènement click serait beaucoup plus compliqué voire impossible :
- seul le navigateur est susceptible d'ouvrir une page dans une
nouvelle fenêtre. Si ce point n'est pas déjà en place au traitement de
ce click, cela rend les choses bien compliquées
- il faudrait faire un redirect toi-même vers la page voulue

Avec la première approche, cela me semble plus directe. On se contente
d'indiquer au premier élément de menu, l'url de destination. Le
mécanisme habituel du menu permet alors d'obtenir le résultat voulu.

---
Patrice

"Jean Claude" de news: 47832a60$0$847$
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis
qu'un Item, mais il y en aura plusieurs, c'est cet Item qui me pose
problème). le clic sur le menu selon l'internaute affiche une page
type definie par session("page"), et il y a trois possibilités de page
type, et toujours selon l'internaute le remplissage de la page se fait
dynamiquement par une requete sur une base de données Access.

Cordialement
J Claude
"Patrice" news: %
Pour l'instant, je ne comprends pas le principe de fonctionnement de
ce menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ?
Même dans ce cas, rien n'empêche de mettre une propriété target sur
chaque menuitem créé dynamiquement. De même, la valeur de
Session("NewPage") pourrait sans doute être utilisée pour
*construire* le menu plutôt que lors de la réaction au clic (je vois
mal d'ailleurs comment le menu fonctionne, le session("newpage")
étant toujours une valeur unique donc quel que soit l'option de menu
cliqué l'utilisateur ira toujours sur la même page ???) Si en
réaction au clic tu prévois ensuite de tester quel est l'élément
cliqué pour aller sur telle ou telle url, il est peut-être aussi
simple de définir ces urls lors de la création dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit
d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les
informations nécessaires à la navigation vers la page suivante sont
connues sans avoir à gérer l'évènement concernant le clic
(accessoirement le groupe ASP.NET serait peut-être plus spécifique à
ce problème).

--
Patrice

"Jean Claude" message de news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?)
dans les balises
asp:menuitem concernées car Session("NewPage") est variable, je l'ai
mis en dur pour tester le menu

Cordialement
JClaude

"Patrice" news:
Problème de logique. La modification de l'objet menu aura pour
effet de dire comment le menu sera généré dans la NOUVELLE page
actuellement en cours de construction d'où la nécessité de cliquer
deux fois pour obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers
le serveur sur demande de l'utilisateur. Ici modifier le code HTML
de la page *en cours de génération* ne sert à rien. C'est le code
HTML de la page *précédente* qui a été utilisé pour relancer une
demande et ce code HTML n'incluant pas le target blank on n'ouvre
effectivement pas la fenêtre dans une nouvelle fenêtre ce
coup-ci... Selon la logique de fonctionnement voulue (je vois que
le nom de la page est également en dur ??) le plus simple serait
sans doute de mettre les "targets" (de même que le NavigateUrl ?)
dans les balises asp:menuitem concernées ce qui pourrait
éventuellement rendre totalement inutile de gérer cet évènement.

--
Patrice

"Jean Claude" message de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois
pour obtenir cela, le premier clic affiche la page en remplacement
de la première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude













































Jean Claude
Le #12215021
Patrice

J'utilise un hyperlinkfield car je veux afficher la page dans une nouvelle
fenetre

JClaude
"Patrice" %
#1 Pour pouvoir le faire il faudrait que Image soit un tableau ? Si tu as
des contrôles disparates Image1, Image2, Image3 le mieux que tu puisses
faire serait qq chose comme :

For i As Integer=1 to Max
thisImage=Me.FindControl("Image" & i) ' Trouve le contrôle ImageX
' Traitement
Next

Chercher FindContriol pour des compléments...

Egalement le "retaillage" est bien sûr purement fait en terme de
présentation. Avec cette méthode, si le fichier de départ est voluminuex,
il sera toujours tout aussi volumineux même si il apparaitra en plus
petit...

#2 Je dirais utilise alors un LinkButton au lieu d'un hyperlinkfield ?

Enfin, je pense que le mieux est tout de même d'ajouter tes questions en
tant que nouveau sujet de discussion pour que d'autres personnes opuissent
t'aider...

Eventuellement chaque question dans une nouvelle discussion pour que les
personnes puissent répondre séparemment à tes différents problèmes...

--
Patrice

"Jean Claude" news: 47871860$0$887$
Bonjour Patrice



Merci pour ta réponse, c'est OK



J'a deux autres problèmes peux-tu m'aider à trouver la réponse ?



-1- je veux afficher 6 images sur une page après les avoir
redimensionnées, j'ai créé une procédure pour cela :



Sub Dessineimage()

'chargement de l'image d'origine

Dim chemin As String = ""

chemin = Session("Rep") & Session("Image")

Dim newImage As Drawing.Image =
System.Drawing.Image.FromFile(Server.MapPath(chemin), True)

Image1.Width = Unit.Pixel(newImage.Width)

Image1.Height = Unit.Pixel(newImage.Height)

Dim lahauteur As Integer = 0

Dim lalargeur As Integer = 0

lahauteur = Image1.Height.Value

lalargeur = Image1.Width.Value

'taille maxi de la nouvelle image

Dim maxHeight As Integer = 150

'Nouvelles dimensions d'affichage

Image1.ImageUrl = "AR2E18M0R02/" & Session("Image")

Image1.Height = lahauteur * (maxHeight / lahauteur)

Image1.Width = lalargeur * (maxHeight / lahauteur)

End Sub



Pour utiliser cette procédure pour chaque image je voulais écrire
Image(I).Width et le code ne l'accepte pas



-2- j'ai créé un GridView avec une colonne avec HyperLinkField pour
pouvoir afficher une page dans une nouvelle fenetre (_target= ''blank'')
après un clic



j'ai besoin d'ajouter à l' HyperLinkField un OnCommand pour créer une
procédure LinkButton_Command car j'ai besoin d'effectuer une requete
avant d'afficher la page (la page étant variable et le code n'accepte pas
OnCommand



Merci pour tes réponses



Cordialement

Jean Claude



"Patrice"
Au temps pour moi c'est Items dans le code (n'hésite pas à jeter un oeil
dans Intellisense). Exemple :
- le menu est donc défini dans la page via :

<asp:Menu ID="Menu1" runat="server">
<Items>
<asp:MenuItem Target="_blank" Text="Page 1"/>
<asp:MenuItem Target="_blank" Text="Page 2"/>
<asp:MenuItem Target="_blank" Text="Page 3"/>
</Items>
</asp:Menu>

Le target est djéà mis mais comme la page exacte dépendra de
l'utilisateur connecté (voire de l'état actuel de l'appli ?) je ne mets
pas les adresses en dur...

Dans le code (Page_Load) cela donne :
Menu1.Items(0).NavigateUrl = "a.aspx"
Menu1.Items(1).NavigateUrl = "b.aspx"
Menu1.Items(2).NavigateUrl = "c.aspx"

A l'éxécution j'ai bien des liens vers les pages a, b,c qui s'ouvrent
dans une nouvelle fenêtre. Ton code utiliserait bien sûr les variables
de session (selon la façon dont tu détermines les pages que
l'utilsiateur verra il est également possible de lier le menu à une
source de données mis bon faisons déjà au plus simple pour l'instant).

--
Patrice

"Jean Claude" de news: 47862e04$0$878$
Bonjour Patrice

C'est pas possible le code ne veut pas prendre MenuItems(0)

Cordialement
Jean Claude



"Patrice" news: %
Ok, je ferais donc tout simplement qq chose comme :

Menu1.MenuItems(0).NavigateUrl=Session("Page") dans le Page_Load pour
définir quelle est l'url à utiliser, la balise menuitem présente dans
la page ASPX utilisant déjà le bon "target" ce qui ouvrira la page
demandée dans une nouvelle fenêtre.

Cela devrait suffire à obtenir l'effet que tu veux. Le gérer dans
l'évènement click serait beaucoup plus compliqué voire impossible :
- seul le navigateur est susceptible d'ouvrir une page dans une
nouvelle fenêtre. Si ce point n'est pas déjà en place au traitement de
ce click, cela rend les choses bien compliquées
- il faudrait faire un redirect toi-même vers la page voulue

Avec la première approche, cela me semble plus directe. On se contente
d'indiquer au premier élément de menu, l'url de destination. Le
mécanisme habituel du menu permet alors d'obtenir le résultat voulu.

---
Patrice

"Jean Claude" de news: 47832a60$0$847$
Bonjour Patrice

Non le menu n'est pas construit dynamiquement (pour le test j'ai mis
qu'un Item, mais il y en aura plusieurs, c'est cet Item qui me pose
problème). le clic sur le menu selon l'internaute affiche une page
type definie par session("page"), et il y a trois possibilités de
page type, et toujours selon l'internaute le remplissage de la page
se fait dynamiquement par une requete sur une base de données Access.

Cordialement
J Claude
"Patrice" news: %
Pour l'instant, je ne comprends pas le principe de fonctionnement de
ce menu.

Le menu est construit dynamiquement ? C'est ce que tu veux dire ?
Même dans ce cas, rien n'empêche de mettre une propriété target sur
chaque menuitem créé dynamiquement. De même, la valeur de
Session("NewPage") pourrait sans doute être utilisée pour
*construire* le menu plutôt que lors de la réaction au clic (je vois
mal d'ailleurs comment le menu fonctionne, le session("newpage")
étant toujours une valeur unique donc quel que soit l'option de menu
cliqué l'utilisateur ira toujours sur la même page ???) Si en
réaction au clic tu prévois ensuite de tester quel est l'élément
cliqué pour aller sur telle ou telle url, il est peut-être aussi
simple de définir ces urls lors de la création dynamique du menu...

Quelque chose comme :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

For i As Integer = 0 To 4

Dim mi As New MenuItem

mi.Text = "Page " & i.ToString

mi.NavigateUrl = "page" & i.ToString & ".aspx" ' Url calculée
dynamiquement, cela pourrait être un tbalau ou quoi que ce soit
d'autre

mi.Target = "_blank"

Menu1.Items.Add(mi)

Next

End Sub


Lorque la page HTML est rendue la première fois, toutes les
informations nécessaires à la navigation vers la page suivante sont
connues sans avoir à gérer l'évènement concernant le clic
(accessoirement le groupe ASP.NET serait peut-être plus spécifique à
ce problème).

--
Patrice

"Jean Claude" message de news: 47824a01$0$887$
Bonjour Patrice

je ne peux pas mettre les "targets" (de même que le NavigateUrl ?)
dans les balises
asp:menuitem concernées car Session("NewPage") est variable, je
l'ai mis en dur pour tester le menu

Cordialement
JClaude

"Patrice" news:
Problème de logique. La modification de l'objet menu aura pour
effet de dire comment le menu sera généré dans la NOUVELLE page
actuellement en cours de construction d'où la nécessité de cliquer
deux fois pour obtenir le comportement voulu.

Bien voir le cycle de fonctionnement : le code .NET tourne sur le
serveur ce qui génère du code HTML qui repostera des demandes vers
le serveur sur demande de l'utilisateur. Ici modifier le code HTML
de la page *en cours de génération* ne sert à rien. C'est le code
HTML de la page *précédente* qui a été utilisé pour relancer une
demande et ce code HTML n'incluant pas le target blank on n'ouvre
effectivement pas la fenêtre dans une nouvelle fenêtre ce
coup-ci... Selon la logique de fonctionnement voulue (je vois que
le nom de la page est également en dur ??) le plus simple serait
sans doute de mettre les "targets" (de même que le NavigateUrl ?)
dans les balises asp:menuitem concernées ce qui pourrait
éventuellement rendre totalement inutile de gérer cet évènement.

--
Patrice

"Jean Claude" message de news: 478235bf$0$845$
Bonjour

Sur un clic Menu je voudrais afficher une page sur une nouvelle
fenetre, avec le code ci-dessous, il me faut cliquer deux fois
pour obtenir cela, le premier clic affiche la page en
remplacement de la première. Pouvez-vous me dire ou est l'erreur

Protected Sub Menu1_MenuItemClick(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.MenuEventArgs) _

Handles Menu1.MenuItemClick

Session("NewPage") = "~/FrmNewPage.aspx"

Menu1.Target = "_blank"

Menu1.SelectedItem.NavigateUrl = Session("NewPage")

Menu1.SelectedItem.Target = "_blank"

End Sub


Merci pour vos réponses
Cordialement
Jean Claude

















































Publicité
Poster une réponse
Anonyme