IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Déterminer la taille de l'écran


Sujet :

ASP.NET

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut Déterminer la taille de l'écran
    Bonjour,

    en C# pour client lourd, il existe la classe Screen qui permet d'obtenir la résolution de l'écran.
    Je voudrais utiliser une fonction similaire dans une application web (ASP.net 1.0, C#) : je voudrais redimensionner une (grosse) boîte de texte en fonction de la résolution.

    Je n'ai besoin de le faire qu'une seule fois (au chargement par exemple).

    C'est possible ou non ?

    Merci d'avance !

    Alban

    PS : si ça peut influer, voici le contrôle que je veux redimensionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:TextBox id="tbRequete" runat="server" Width="450px" Height="150px" TextMode="MultiLine" Visible="False" Font-Names="monospace"></asp:TextBox>

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu dois récupérer la résolution en javascript

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Sinon tu peux virer Width et Height du control, et utiliser les propriétés CSS en %.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Merci pour l'astuce :-)

    Donc, dans l'entête, je positionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <SCRIPT LANGUAGE="JavaScript">
    EcranHaut = screen.height;
    EcranLarg = screen.width;
    Ecran = EcranLarg + " x " + EcranHaut;
    </SCRIPT>
    Ensuite, pour récupérer la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SCRIPT LANGUAGE="JavaScript">
    document.write(Ecran);
    </SCRIPT>
    En pratique, seule la largeur m'intéresse vraiment... mais la modification est évidente !

    Par contre, je ne vois pas comment passer cette valeur au code C# (dans le .aspx.cs).
    Je suppose qu'il faut partir d'un champ caché, mais quel type de champ est le plus adapté ? C'est largement plus simple par un textbox ou un label (contrôles webforms), mais c'est gourmand !

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu mets un champ input hidden avec un id et un runat="server"
    Tu le remplis en javascript
    Tu y accèdes dans le code C# via son id (comme avec un control classique)

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    J'y suis presque ;-)

    J'ai essayé ça... mais évidemment, ça ne fonctionne pas (l'inverse m'aurait étonné) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <INPUT type="hidden" runat="server" id="hidLargEcran" value="<SCRIPT LANGUAGE="JavaScript">
    document.write(Ecran);</SCRIPT>">
    Quelle est la bonne méthode ? Celle ci-dessous me semble... lourde (en plus de ne pas être trop adaptée à l'ASP) !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="text/javascript">
    document.write('<input type="hidden" name="HauteurEcran" id="HauteurEcran" value="');
    document.write(screen.height);
    document.write('">');
    </script>

  7. #7
    Membre averti
    Profil pro
    Dev
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Par défaut
    sinon tu peut passer aussi par les variables de session ou tout simplement par un querystring dans l'url.
    genre ton javascript recuperer la resolution et fait une redirection avec la valeur dans l'url

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Citation Envoyé par moomoon
    sinon tu peut passer aussi par les variables de session ou tout simplement par un querystring dans l'url.
    genre ton javascript recuperer la resolution et fait une redirection avec la valeur dans l'url
    En fait... je ne connais pas du tout javaScript, et c'est ma première application web C# (les plaisirs des stages).
    Du coup... j'ai un peu de mal... (et je ne vois pas du tout de quoi tu parles ).

    Entre temps, j'ai "allégé" mon code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" runat="server" name="HauteurEcran" id="HauteurEcran" value="javascript:screen.height">
    Mais la récupération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbRequete.Text = HauteurEcran.Value;
    m'envoie sur les roses...
    Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client (HauteurEcran="javascript:screen.height").
    Description : La validation de la demande a détecté une valeur d'entrée du client potentiellement dangereuse et le traitement de la demande a été abandonné. Cette valeur peut indiquer une tentative pour compromettre la sécurité de votre application, telle qu'une attaque de script entre sites. Vous pouvez désactiver la validation de la demande en définissant validateRequest=false dans la directive de page ou dans la section de configuration . Cependant, il est fortement recommandé que votre application contrôle explicitement toutes les entrées dans ce cas là.
    Méééé heu !

  9. #9
    Membre averti
    Profil pro
    Dev
    Inscrit en
    Février 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2007
    Messages : 38
    Par défaut
    c'est pas bien du tout ce que je vais te dire, mais ajoute "ValidateRequest="false"" dans les directive de ta page aspx.... par contre si tu pouvai essayer de le faire fonctionné sans cette directive ca serai mieux

    mon exemple c'etait de faire cela :
    faire une page de transition avec ce code javascript :
    <script language="javascript">
    res = "&res="+screen.width+"x"+screen.height+"&d="+screen.colorDepth
    top.location.href="nomdetapage.aspx?action=set"+res
    </script>

    et ensuite dans ta page nomdetapage.aspx, tu peut récupere la valeur en faisant request.querystring["action"] dans ton code behind

    Regarde cette aticle : http://www.devcity.net/Articles/64/1...esolution.aspx

    Mais c'est vrai que ce n'ai pas tres propre...

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    J'ai suffisament d'autres informations assez sensibles pour ne pas avoir trop envie de le faire justement...
    S'il y a une chose que je peux sacrifier, c'est la taille de cette boîte (par rapport au reste). Ceci dit, si je ne le fais pas, ça sera pas glop niveau ergonomie.

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    HauteurEcran

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <SCRIPT LANGUAGE="JavaScript">
    EcranHaut = screen.height;
    EcranLarg = screen.width;
    Ecran = EcranLarg + " x " + EcranHaut;
     
    obj = document.GetElementById('HauteurEcran');
    obj.value = Ecran;
     
    </SCRIPT>

  12. #12
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Merci ! ... et c'est là que ça devient drôle.
    Cet outil est destiné à un intranet d'entreprise, dont le seul navigateur est Internet Explorer 6.

    Et au lancement du script, il m'indique que "cet objet ne gère pas cette propriété ou cette méthode". Et ça, pour les deux instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    obj = document.GetElementById('HauteurEcran');
    obj.Value = Ecran;
    Donc au final, ça me saoûle ces environnements de m*****, je vais adapter pour du 1024x768 et tant pis...

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Autant pour moi, c'est un g et non un G dans getElementbyId

  14. #14
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Bon, je vais refaire un effort et essayer

    Mais si ça ne fonctionne pas mieux, ne te casse pas la tête...

    Merci en tout cas !

Discussions similaires

  1. Taille de l'écran
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 16/02/2006, 13h51
  2. Un layer qui prend la taille de l'écran
    Par KibitO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/01/2006, 16h09
  3. [disque dur] Déterminer la taille du/des disques durs
    Par FFF dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 20/10/2005, 23h30
  4. [J2ME][debutant] Récupérer la taille d'un écran
    Par kisscool31 dans le forum Java ME
    Réponses: 4
    Dernier message: 21/04/2005, 16h56
  5. [JButton] déterminer sa taille
    Par ummon99 dans le forum Composants
    Réponses: 8
    Dernier message: 15/04/2005, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo