Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementComment switcher dComment switcher d'un ascx vers un autre ascx via un lien ou bouton
Précédente
 
Suivante
Nouveau message
12/07/2007 15:20
 

Arg je me sens trés con là, mais j'ai jamais fait cela. Comment depuis un module DNN basculer sur un autre ASCX depuis un lien ou bouton ou request dans l'url ... en C#

 
Nouveau message
12/07/2007 16:03
 

en VB (j'imagine que tu n'auras pas de mal à retranscrire), j'utilise :

Response.Redirect(EditUrl("Param", ValeurParam), True) sur l'évenement click d'un linkbutton par exemple

Ceci permet de basculer sur l'ascx déclaré dans le module courant avec la clé de contrôle "Edit" (par défaut, sinon, on peut utiliser une surcharge pour spécifier une autre clé de contrôle) en transmettant un request param dans l'URL "Param" avec "ValeurParam comme valeur. Le true à la fin indique que la redirection doit opérer immédiatement.

D'autres surcharges permettent de transmettre un tableau de request params.

 




Stéphane TETARD
ARICIE - Member of DotNetNuke France
 
Nouveau message
12/07/2007 17:27
 

Là je rame un peu ... Tu aurais un exemple en VB ..

 
Nouveau message
13/07/2007 00:54
 

 C'est assez simple. Tout d'abord tu crées ton ASCX et tu le places dans un dossier de l'application, par convention dnn dans desktopModules/Tonmodule/...

Ensuite tu édites la définition du module via Host > Modules > Edit ton module > et en bas, ajouter un nouveau contrôle. Pour notre exemple, j'ai mis le controle editReport.ascx en mode View, avec la clef EditReport. (Exemple tiré d'Aricie.CrystalReportViewer).

Tu ajoutes un LinkButon ou nimporte quel contrôle serveur, puis tu captes un evenement émanant de lui. Pour l'exemple, l'évenement capté est regroupé dans un ItemTemplate car j'affiche une liste d'objets (/.Net 1), et le nom du contrôle détermine l'action à réaliser. Dans VisualStudio, double cliquer sur ton contrôle ajouté en mode design ajoutera automatiquement l'évènement courant pour le contrôle, ainsi, un linkButon se vera attribuer une commande "Handles Buton.Click".

[CODE]

 

       Private Sub grdAricie_CrystalReports_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles grdAricie_CrystalReports.ItemCommand
            Select Case e.CommandName

                Case "cmdView"
                    Try

                       Response.Redirect(NavigateURL(TabId, "EditMyReport", "itemId=" & ItemId))

                    Catch exc As Exception    'Module failed to load
                        ProcessModuleLoadException(Me, exc)
                        Response.Redirect(NavigateURL(TabId, "UnauthorizedAccess"))
                    End Try

                Case Else

                       [ ... ]

            End Select
        End Sub

[/CODE]

Avec ça, on ne change pas de page, on change simplement de contrôle et un PostBack complet a lieu (Sauf si on utilise Ajax);  au passage je lui passe rapidement un ItemID qui va permettre au contrôle autonome suivant de  déduire ses instructions.

La clef unique d'un contrôle à l'échelle d'un module permet de construire rapidement son URL, en lui passant un TabId et un moduleID. Mais tu peux également vouloir naviguer en appelant directement une page, exemple avec un hyperlien (Ici j'affiche le rapport sur une page ASPX, l'url du lien cliquable est construite au pageLoad précédent le Click)

 .NavigateUrl = ResolveUrl(TemplateSourceDirectory & "/ReportViewer.aspx?itemId=" & objAricie.CrystalReport.ItemId)

Le même hyperlien qui fait "changer de contrôle" :

.NavigateUrl = ResolveUrl(NavigateURL(TabId, "EditMyReport", "itemId=" & ItemId)) (à vérifier je fais ça à la main mais cela devrait fonctionner)

 

Tu peux aussi retrouver d'autres exemples dans les modules Core car il y a plusieurs façons de faire ça.

 

seb

 

 
Nouveau message
13/07/2007 15:49
 

DotNetNuke.Common;

En fait en C# il faut ajouter dans son entete...de son webcontrol

using

 

DotNetNuke.Common;...

et dans le code du bouton .Globals.NavigateURL(PortalSettings.ActiveTab.TabID,"view02","mid="+ModuleId.ToString()));

 

Merci pour ton aide..

Response.Redirect(

 
Nouveau message
22/10/2007 03:40
 

Bonjour,

avant de répondre j'ai pas lu tt les réponses qui on été fait, mais je v essayer comme même de répondre a ta question.

ben, je pense ke la question c ke vous voullez a chaque fois de charger un nouveau controle suite a des événements, si c'étais bien ça alors c simple, la solution est d'ajouter un nouveau controle dans le quel tu va charger tes controles selon ton besion dans un placeholder ou bien un Panel on utilisant une session ou bien un paramettre URL pour spécifier quel controle devrais être charger.

Bonne courage.

 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementComment switcher dComment switcher d'un ascx vers un autre ascx via un lien ou bouton