|
|
|
Inscrit(e) le : 24/07/2008
51 messages
|
|
|
Bonjour à tous,
J'ai un module qui comporte des boutons en haut et lorsque l'on clique sur l'un d'eux, un gridView en pied de page se remplit.
En fait, j'aimerais qu'après un clic, la page se positionne sur le gridview.
J'ai mis une ancre et dans le traitement du clic, j'ai fait:
this.Page.RegisterStartupScript("Startup ", <script language='javascript'>window.location.href='#teteGvDoc';</script>);
Ca pourrait fonctionner, mais DNN a un comportement automatique qui fait qu'après le chargement de la page, il se repositionne automatiquement à l'endroit ou il était lors du clic... Ca fait donc un va et vient.
Comment désactiver ce comportement ?
Ou alors si vous avez une autre méthode.
Merci d'avance.
David.
|
|
|
|
| |
|
|
|
www.dotnetnuke.fr Inscrit(e) le : 06/09/2006
182 messages
|
|
|
Pareil... mais je n'ai pas encore trouvé de solutions... peut-être que l'ami Gilles passera par là !?
David (un autre !)
"Qui ne connait pas l'Histoire ne connait rien".
|
|
|
|
| |
|
|
|
Inscrit(e) le : 19/04/2006
837 messages
|
|
|
Bonjour David,
En programmation, il faut utiliser la classe méconnue CDefault du framewok dnn. Pour positionner l'utilisateur sur un controle, il suffit de passer une référence à celui-ci :
DirectCast(Page, DotNetNuke.Framework.CDefault).ScrollToControl(NomDeTonControle)
J'utilise cette classe dans Store pour modifier dynamiquement les meta tags de la page (Title, Keywords, Description, ...). C'est la seconde utilité de cette classe, elle ne fait rien d'autre mais c'est déjà beaucoup ! ;-)
Voilà, une seule ligne, pas de tag anchor pourquoi faire compliqué ?
Gilles
|
|
|
|
| |
|
|
|
Inscrit(e) le : 19/04/2006
837 messages
|
|
|
Salut (l'autre) David !
Pour ton problème, je suppose que ce n'est pas en programmation ? Donne moi plus d'infos sur ton cas particulier, est-ce avec FnL en XSLT ?
Gilles
|
|
|
|
| |
|
|
|
Inscrit(e) le : 24/07/2008
51 messages
|
|
|
Bonjour Ploum,
Merci pour ta rapidité.
J'ai un souci, il ne veut pas de directCast (ni de CType), pourtant, je suis dans le page_load de mon module.
Le nom 'CType' n'existe pas dans le contexte actuel
J'ai ces bibliotheque là:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Reflection;
using System.Configuration;
using System.IO;
using DotNetNuke;
using DotNetNuke.Common;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Modules.Actions;
using DotNetNuke.Security;
using DotNetNuke.Services.Exceptions;
using DotNetNuke.Services.FileSystem;
using DotNetNuke.Services.Localization;
De plus, j'émet un doute, car avec mes bricolages, j'arivais à me placer à l'endroit désiré mais DNN me redirigeait aussitôt après en haut de la page... Je pense que ce comportement existera toujours avec ta solution, nan ?
David (le 1er)
|
|
|
|
| |
|
|
|
Inscrit(e) le : 24/07/2008
51 messages
|
|
|
Extra !
J'ai fait ça:
DotNetNuke.Framework.CDefault cd = new DotNetNuke.Framework.CDefault();
cd.Page = Page;
cd.ScrollToControl(lblInfos);
Ca marche du tonnerre ton actuce. ;-)
Merci Ploum !
Ceci dit, je ne m'explique toujours pas pourquoi mon CType (qui est utilisé ailleurs) fait planter mon script.
Et puis, je ne sais pas non plus pourquoi le comportement indésiré de DNN a sauté avec ton code...
|
|
|
|
| |
|
|
|
Inscrit(e) le : 24/07/2008
51 messages
|
|
|
Bin mince... Ton truc ne fonctionne que si on est connecté en Host.
Et encore, il ne faut pas qu'on soit en mode apercu. 0_0
Normal ?
|
|
|
|
| |
|
|
|
Inscrit(e) le : 19/04/2006
837 messages
|
|
|
Salut David,
Désolé, je n'avais pas fait attention que tu programmais en C# ! Donc, une syntaxe valide en C# serait (merci les cast) :
((CDefault)this.Page).ScrollToControl(NomDuControle);
Le doute que tu émet n'est pas fondé. Le comportement '"standard" est dù au fait que par défaut ScrollToControl vaut 0 (zéro), dnn positionne alors la page en haut. Lorsque tu défini le controle sur lequel se positionner dnn fait ce que tu lui demande ! Il n'est pas contrariant. ;-)
Gilles
|
|
|
|
| |
|
|
|
Inscrit(e) le : 24/07/2008
51 messages
|
|
|
[EDIT]
((DotNetNuke.Framework.CDefault)this.Page).ScrollToControl(lblInfos);
[/EDIT]
Super exta génial... Ca fonctionne à merveille... Et pour tout le monde.
Merci Ploum !!!
|
|
|
|
| |
|
|
|
Inscrit(e) le : 19/04/2006
837 messages
|
|
|
Re,
Alors, à mon humble avis, tu utilise Internet Explorer et ton skin ne possède pas de DOCTYPE (ou celui-ci est incomplet ou incorrect). Ceci n'est probablement pas dù à dnn, mais résulte d'un skin qui n'est pas valide W3C. Tu devrais vérifier ton DOCTYPE et valider ton skin avec cet outil. Lorsqu'un skin ne possde pas de DOCTYPE valide, IE passe en mode "Quick" et dégrade le comportement. Parfois, il en résulte des dysfonctionnements. Ce problème est bien connu des webdesigners qui travaillent toujours avec des DOCTYPE valides. Tu devrais faire l'essai avec un dnn 5.1.4 et le skin par défaut qui normalement est valide. Tu peux aussi faire un test avec FireFox, tu devrais avoir un comportement différent car FF n'applique pas les même règles que IE (oeuf course!).
Pour déclarer un DOCTYPE valide pour un skin, il faut un fichier de déclaration NomDuSkin.doctype.xml ! Par exemple, si ton skin possède un ascx nommé Accueil.ascx, tu devrais avoir un fichier Accueil.doctype.xml contenant le code suivant (pour XHTML 1.0 Transitional) :
<SkinDocType>
<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
]]>
</SkinDocType>
L'erreur classique d'un DOCTYPE incorrect est d'oublier l'url qui pointe vers la bonne dtd. Evidement, il faut un fichier de déclaration de DOCTYPE par ascx !
Gilles
|
|
|
|
| |
|
|
|
Inscrit(e) le : 19/04/2006
837 messages
|
|
|
Re,
Alors, tu vois quand tu veux ! ;-) Bon il va faloir revoir notre accord à la hausse, maintenant ce n'est plus une coupette mais une bassine !
Gilles
EDIT: Oups, j'ai confondu tes posts avec ceux de ThierryL (qui me doit une coupette). Mais j'accepte les coupettes de tout le monde ! ;-)
Ploum = Ivrogne ? Non, juste un bon vivant ! ;-)
|
|
|
|