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

Développement Web avec .NET Discussion :

ASP.NET : Remplacer du code par un autre alors que la page asp est ouverte [Débutant]


Sujet :

Développement Web avec .NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut ASP.NET : Remplacer du code par un autre alors que la page asp est ouverte
    Bonjour à toutes et tous,

    J'ai une page Web (intranet) qui affiche des informations, je souhaite pouvoir intervenir dessus en modifiant dynamiquement le code de cette page.
    Voici un exemple de ce que je voudrais faire :
    Code initial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:Content ID="DiffusionPage" ContentPlaceHolderID="ContentDiffusionPage" runat="server">
        <video id="DiffusionDocument"  width="1400" height="800" controls="controls" src="http://CheminFichier/videomp4.mp4" typeof="video/mp4" preload="auto" autoplay="autoplay"> </video>
    </asp:Content>

    Code souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:Content ID="DiffusionPage" ContentPlaceHolderID="ContentDiffusionPage" runat="server">
        <object id="DiffusionDocument" data="http://CheminFichier/FichierPDF.pdf" type="application/pdf" title="" width="1400" height="800"></object>
    </asp:Content>
    ou ce code ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:Content ID="DiffusionPage" ContentPlaceHolderID="ContentDiffusionPage" runat="server">
        <object id="DiffusionDocument" data="http://CheminFichier/FichierJPG.jpg" type="image/jpeg" title="" width="1400" height="800"></object>
    </asp:Content>
    Actuellement ce code est écris dans ma page aspx mais je suis prêt à revoir la conception de celle-ci (remplacement du code par un autre et/ou création dynamique de code).

    Le soucis reste dans la réalisation de cette modification.

    Si vous avez un exemple de code me permettant de faire cela, cela m'aiderait grandement.

    Par avance merci de votre temps passé à lire cette discussion et de votre éventuelle réponse.

    Olivier

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    quelle est l'information discriminante qui te permet de savoir quel élément afficher ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Bonjour jopopmk,

    L'élément qui va remplacé le code initial se trouve dans une base de données.
    C'est un fichier (pris au hasard) qui selon son extension devra être remplacé par un élément pour une vidéo, un PDF ou une image ...

    J'espère que cette information est celle que tu attendais.

    Merci de te pencher sur mon problème.

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    C'est pas tout à fait la réponse que j'attendais, mais soit.
    Du coup l'utilisateur arrive sur ta page avec une URL du genre : http://site.ext/page.aspx?idDoc=XXX, XXX étant l'identifiant unique pointant vers un document dans ta DB ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    En fait pas vraiment, l'adresse du site est toujours la même.

    J'ai un UpdatePanel et un Timer qui va lire une table de ma BdD toutes les 10min et qui me retourne du texte à afficher et le nom du fichier (avec path) qu'il faut que j'affiche en lieu et place du précédent.

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Qu'est-ce qui fait que, 10" après un premier check DB, le document pointé aurait subitement changé, sans intervention de l'utilisateur ?

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    C'est un écran de diffusion d'informations.
    Donc toutes les 10min je passe à un autre document parmi N documents contenus dans ma BdD mais qui peuvent être de type : PDF, vidéo, images ...

    L'utilisateur ne touche à rien mais le diffuseur peut ajouter/supprimer un document dans la BdD et cela doit être pris en compte automatiquement sans avoir à relancer la page côté User.

  8. #8
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Quel est le code actuel de l'event Tick de ton Timer ?

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
            protected void TimerCategories_Tick(object sender, EventArgs e)
            {
                // Initialisation de connexion SQL
                SqlConnection sqlConnectionCategories = new SqlConnection(ConnexionSQL);
                SqlCommand cmdCategories = new SqlCommand();
                cmdCategories.Connection = sqlConnectionCategories;
                SqlDataReader ResultCategories;
                // Ouverture de connexion SQL
                sqlConnectionCategories.Open();
               cmdCategories.CommandText = "SELECT Titre, CheminFichier FROM MaTable WHERE Condition"; 
                ResultCategories = cmdCategories.ExecuteReader();
                if (ResultCategories.HasRows)
                {
                            TextBoxTitle.Text = ResultCategories.GetValue(0).ToString().Trim();
                            // ICI LE CODE POUR CHANGER LE CODE EN PLACE
                }
            }

  10. #10
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    D'accord, donc en fait actuellement tu n'as rien comme code pour ajouter un contrôle.
    Ce que je te propose :
    - dans ton UpdatePanel tu mets un PlaceHolder identifié,
    - dans ton Tick tu commences par supprimer les contrôles que contient le PlaceHolder (pour supprimer le précédent "document"),
    - tu crées de toute pièce un HtmlElement du type souhaité (fonction de ce que tu obtiens de ta DB, ex. HtmlObjectElement pour une balise object dans le cas d'un pdf dans ton exemple),
    - tu l'ajoutes aux contrôles de ton PlaceHolder.

    Nota : je n'ai pas l'impression que tes balises video/object soient des contrôles serveur, je me trompe ?

  11. #11
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    En déclaration j'avais placé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected PlaceHolder PlaceHolder1;
    Et dans le code où le remplacement devait être fait j'avais mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	Label monlabel = new Label();
    	PlaceHolder1.Controls.Add(monlabel);
    Juste pour un test ... Cela ne fonctionnait pas ...

    Je n'ai pas trouvé de code pour supprimer le contrôle situé dans le PlaceHolder.

    Pour la création de toutes pièces, je ne sais pas comment faire cela correctement, aurais-tu un bout de code en exemple ?

    Pour ta Nota, j'avoue que je ne saisie pas bien le sens de la question ...

    Merci de ton intérêt à mon problème.

  12. #12
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Ton premier extrait de code n'est qu'une déclaration, ça ne peut pas fonctionner (je suis même étonné que tu n'aies pas eu d'exception).
    Dans le fichier asp (pas le code behind), entre les balises de ton UpdatePanel, tu dois inscrire ta balise PlaceHolder (identifiée).
    Pour supprimer les contrôles d'un PlaceHolder c'est super compliqué, accroche-toi bien : myPlaceHolder.Controls.Clear();.

  13. #13
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Je viens de mettre le code ci-dessous dans ma page form.aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:PlaceHolder ID="PlaceHolderDocument" runat="server"></asp:PlaceHolder>
    Dans ma page form.aspx.cs, j'ai mis le code suivant dans le Tick de mon Timer :

    En effet pour le Controls.Clear ... C'est super compliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PlaceHolderDocument.Controls.Clear();
    Label monlabel = new Label();
    monlabel.Text = "TEST AJOUT LABEL";
    monlabel.Width = 500;
    monlabel.Height = 100;
    monlabel.BackColor = Color.Bisque;
    PlaceHolderDocument.Controls.Add(monlabel);
    Je n'ai rien qui s'affiche, est-ce que j'aurai oublié quelque chose ?
    Initialement je n'avais pas mis d'indication concernant la hauteur et la largeur ainsi que pour la couleur de fond.

    Merci d'avance

  14. #14
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Dans le cas où cela fonctionne, cela m'afficherait un Label ...
    Je voudrais pouvoir intégrer un Object (pour les PDF) et une Vidéo (pour les mp4) ...

    Je suis en train d'essayer avec un Object et les paramètres id, data, type ne sont pas paramètrables ...

    Est-ce que cela est possible ou pas du tout ?

  15. #15
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Pour ton élément HTML tu peux utiliser la classe HtmlGenericControl.
    Elle prend une string en param de son constructeur qui correspond au nom de ta balise (ex. "video").
    Elle possède également une collection Attributes qui te permettra d'inscrire les attributs de ton choix.

  16. #16
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Je vais essayé de faire en fonction de ce que tu m'as donné mais est-ce que par hasard tu aurais un exemple en code (juste au cas où) ?

  17. #17
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    J'ai rien sous la main mais si je trouve un peu de temps je te fais un tit exemple.

  18. #18
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Alors voilà un tit exemple pour incruster une vidéo :

    Fichier page.aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:PlaceHolder ID="phContainer" runat="server" ></asp:PlaceHolder>
    La déclaration de l'objet côté code est automatiquement faite dans le fichier page.aspx.designer.cs.

    Fichier pages.aspx.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void Page_Load(object sender, EventArgs e) {
    	HtmlGenericControl vid = new HtmlGenericControl("video");
    	vid.Attributes.Add("width", "600");
    	vid.Attributes.Add("height", "400");
    	vid.Attributes.Add("src", "http://media.webcollage.net/rlfp/wc/live/module/microsoftband/_cp/products/1446756031904/tab-306c08e1-d8f6-4ba7-bbbe-e2b6084d6e8d/419f89aa-392b-4cc8-be2f-037934301c11.mp4.mp4full.mp4");
    	vid.Attributes.Add("controls", "controls");
    	phContainer.Controls.Clear();
    	phContainer.Controls.Add(vid);
    }
    L'URL de la vidéo a été trouvée par google avec "filetype:mp4", c'est pas de la pub cachée pour un produit Crosoft ^^

  19. #19
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Merci pour ton code, j'avoue que j'en étais assez loin ...

    J'ai essayé avec ton code et cela ne fonctionne pas, il a fallu que je rajoute le USING pour HtmlGenericControl mais même résultat.

    Je vais essayé de créer un nouveau projet avec juste ça dans le code ...

    En tout cas merci pour ton aide. Je reviendrais vers toi afin de te dire si cela fonctionne (et clôturer cette question le cas échéant).

  20. #20
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Oui, j'ai pas précisé qu'il fallait inclure le namespace System.Web.UI.HtmlControls sachant que VS allait bien te dire quoi faire

    Le code que je présente ici a été testé et fonctionne, par contre je suis pas dans le cadre d'un UpdatePanel/Timer/ScriptManager comme toi.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. lancer un autre thread depuis une page ASP.net
    Par Arthis dans le forum ASP.NET
    Réponses: 9
    Dernier message: 11/12/2009, 14h24
  2. Réponses: 1
    Dernier message: 26/08/2009, 21h12
  3. Utlisation d'autres langues sur des pages ASP.NET 2005
    Par nkonito dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/07/2007, 15h56
  4. Réponses: 10
    Dernier message: 31/08/2006, 14h57
  5. [VB.NET] Comment remplacer une couleur par une autre?
    Par jazz matazz dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/02/2006, 14h29

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