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 :

[ASP.NET] Comment r�cup�rer donn�es depuis une MasterPage ?


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France, Seine et Marne (�le de France)

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 43
    Par d�faut [ASP.NET] Comment r�cup�rer donn�es depuis une MasterPage ?
    Bonjour,
    Je revenais vers vous car je souhaitais savoir si quelqu'un savait comment r�cup�rer des valeurs envoy�es depuis la MasterPage vers la pagecontent (celle qui prend la place du ContentPlaceHolder)
    Par exemple la Masterpage poss�de un contr�le et je souhaite depuis la page qui prend la place du ContentPlaceHolder r�cup�rer la valeur de ce contr�le s�lectionn� ?
    Merci de votre aide.
    A+ et bon week end Fred

  2. #2
    R�dacteur
    Avatar de The_badger_man
    Profil pro
    D�veloppeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par d�faut
    Bien s�r. Par exemple, si dans la master page tu as un label dans l'attribut id est monLabel, tu peux taper ce code pour y acc�der :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    Label lb= Master.FindControl("monLabel") as Label;
    if(lb != null)
    {
       lb.Text = ....
    }
    On dit merci � la propri�t� Master de la page de contenu
    Les r�gles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages priv�s svp

    Software is never finished, only abandoned.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    43
    D�tails du profil
    Informations personnelles :
    Localisation : France, Seine et Marne (�le de France)

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 43
    Par d�faut
    Bonjour,
    Merci de ce retour. J'ai essay� en vain de faire fonctionner cette technique(exemple ci-dessous).
    Je n'arrive pas � r�cup�rer la valeur qui se trouve dans MasterTextBox et � l'afficher dans un autre textBox de la Default2.aspx (celui ci reste vide).
    As-tu une id�e ?
    Merci de ton retour et de tes id�es.
    Bon week end, cordialement,
    Fred

    MasterPage
    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
    18
    19
    20
     
    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Page sans titre</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="MasterTextBox" runat="server" AutoPostBack="True"></asp:TextBox>
    <asp:HyperLink NavigateUrl="~/Default2.aspx" ID="HyperLink1" runat="server">HyperLink</asp:HyperLink>
    <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
    </asp:contentplaceholder>
    </div>
    </form>
    </body>
    </html>
    Default2.aspx
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:Label ID="Label2" runat="server" Text="deuxième page" BackColor="Cyan"></asp:Label>
    <br />
    &nbsp;
    </asp:Content>
    Default2.aspx.cs
    Code C# : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void Page_Load(object sender, EventArgs e)
    {
    TextBox lb = Master.FindControl("MasterTextBox") as TextBox;
    if (lb != null)
    {
    Page.Title = "passage dans If";
    if(!lb.Text.Equals(""))
    Label2.Text = lb.Text;
    else
    Label2.Text = "pas de valeur concrète!!";
    }
    }

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Par d�faut
    C'est pourtant la bonne technique. Par contre, si tu essayes du code VB dans une page Csharp, �a risque de pas fonctionner comme tu veux or, c'est apparement ce que tu fais puisque

    <%@ Page Language="C#"

    et que dans le load tu fais


    TextBox lb = Master.FindControl("MasterTextBox") as TextBox;
    if (lb != null)
    {
    Page.Title = "passage dans If";
    if(!lb.Text.Equals(""))
    Label2.Text = lb.Text;
    else
    Label2.Text = "pas de valeur concr�te!!";
    }
    c'est � dire du VB

    Donc, en csharp, je ferais comme suit:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TextBox TmpTextBox = (TextBox)Master.FindControl("MasterTextBox");
    if(TmpTextBox != null && TmpTextBox.Text != "")
    {
      //recupère le texte
    }
    else
    {
     //pas de texte à récupérer
    }

  5. #5
    R�dacteur
    Avatar de The_badger_man
    Profil pro
    D�veloppeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par d�faut
    non non, c'est bien du C#

    La technique que tu donnes pour r�cup�rer l'objet Textbox n'est pas bonne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TextBox TmpTextBox = (TextBox)Master.FindControl("MasterTextBox");
    if(TmpTextBox != null && TmpTextBox.Text != "")
    {
      //recupère le texte
    }
    else
    }
      //pas de texte à récupérer
    }
    car tu castes directement l'objet en TextBox. Apres tu v�rifies si l'objet n'est pas null au cas o� �a ne serait pas une textbox.
    Or, si ce n'est pas une texbox et que tu essaies quand m�me de le convertir en Texbox, TmpTextBox ne prend pas la valeur null : le programme plante !!!!!!

    Voici la bonne solution :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    TextBox lb = Master.FindControl("MasterTextBox") as TextBox;
    if (lb != null)
    {
    }
    Le mot clef "as" fait parti du C# . Grace � lui, si l'objet n'est pas une textbox, la tentative de caste renvoit effectivement null. Donc l� tu peux ensuite faire un if(lb != null)
    Les r�gles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages priv�s svp

    Software is never finished, only abandoned.

  6. #6
    Membre tr�s actif
    Inscrit en
    Janvier 2004
    Messages
    208
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Par d�faut
    une autre technique consiste a cr�er une propriet� pour recuperer le String du TextBox

    dans ta page master tu declare une propriet�
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    public String LeNomDeTonChamp
    {
    get (return TonTextBox.Text.Trim())
    set (TonTextBox.Text = value.Trim())
    }
    de l'autre cot� sur ta page pour exemple
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    String LaValeur = TaMasterPage.LeNomDeTonChamp;
    par contre verifie l'etat du ViewState de ton control en master.Page
    et essais de gerer un postback sur la page.

    de plus en C# 2, tu as une methode pour la valeur d'un string
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    String.IsNullOrEmpty(TonTextBox);

    Bon code

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    D�tails du profil
    Informations personnelles :
    �ge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Par d�faut
    Citation Envoy� par The_badger_man
    non non, c'est bien du C#

    La technique que tu donnes pour r�cup�rer l'objet Textbox n'est pas bonne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TextBox TmpTextBox = (TextBox)Master.FindControl("MasterTextBox");
    if(TmpTextBox != null && TmpTextBox.Text != "")
    {
      //recupère le texte
    }
    else
    }
      //pas de texte à récupérer
    }
    car tu castes directement l'objet en TextBox. Apres tu v�rifies si l'objet n'est pas null au cas o� �a ne serait pas une textbox.
    Or, si ce n'est pas une texbox et que tu essaies quand m�me de le convertir en Texbox, TmpTextBox ne prend pas la valeur null : le programme plante !!!!!!

    Voici la bonne solution :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    TextBox lb = Master.FindControl("MasterTextBox") as TextBox;
    if (lb != null)
    {
    }
    Le mot clef "as" fait parti du C# . Grace � lui, si l'objet n'est pas une textbox, la tentative de caste renvoit effectivement null. Donc l� tu peux ensuite faire un if(lb != null)
    Lol, j'avais encore jamais vu cette syntaxe en C#. J'aurai appris un truc sur ce thread. Par contre, � mon avis, le gar�on n'a toujours pas sa solution

Discussions similaires

  1. Ado: comment r�cup�rer les donn�es depuis une bd?
    Par zidane2 dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 14/09/2010, 01h09
  2. ASP.NET - Ouvrir un binaire depuis une base SQL Server
    Par nono27200 dans le forum G�n�ral Dotnet
    R�ponses: 1
    Dernier message: 16/10/2008, 20h47
  3. [VB.Net] Comment r�cup�rer dans un textbox une donn�e BDD ?
    Par zzzmoi dans le forum Acc�s aux donn�es
    R�ponses: 10
    Dernier message: 08/07/2007, 02h08
  4. [VB.Net] Comment r�cup�rer les proprietes d'une image ?
    Par Cirdan Telemnar dans le forum VB.NET
    R�ponses: 2
    Dernier message: 29/06/2006, 16h15
  5. R�ponses: 1
    Dernier message: 05/05/2006, 14h37

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