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 :

Nom d'un control dans une variable


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut Nom d'un control dans une variable
    Bonjour,

    soit la variable MaVariable de type string

    Si un ControlLabel s'appelle 'MonLabel', je peux lui affecter du texte en faisant :

    MonLabel.Text = "BlaBlaBla" ;

    comment faire maintenant si 'MonLabel' est contenu dans MaVariable ?

    Merci

  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
    Page.FindControl(taVariable)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Merci, cela semble fonctionner mais j'ai malgré tout une interrogation.

    J'utilise ce code pour retrouver un control TextBox dans un Gridview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            int index = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = GridView1.Rows[index];
            string uniqueID = row.Cells[1].Controls[1].UniqueID;
    ensuite, j'utilise cette notation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextBox textBox = (TextBox)(Page.FindControl(uniqueID));
    le hic, c'est que si j'avais ABC dans la zone d'entrée et que j'y ai mis XYZ, textBox.Text vaut encore 'ABC' et non 'XYZ'.

    Quelle est mon erreur ?

    Merci

  4. #4
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Salut,
    dans qu'elle evennement tu fait appel a ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox textBox = (TextBox)(Page.FindControl(uniqueID));

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    J'ai créé la méthode suivante dans le code behind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void RowCommand(object sender, GridViewCommandEventArgs e)
    {
            int index = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = GridView1.Rows[index];
            string uniqueID = row.Cells[1].Controls[1].UniqueID;
            TextBox textBox = (TextBox)(Page.FindControl(uniqueID));
    }
    RowCommand est définit dans les attributs du GridView : OnRowCommand="RowCommand"

    le GridView dispose d'une colonne spécifique pour provoquer l'appel à la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:ButtonField CommandName="Testing" ButtonType="Image" ImageUrl="~/App_Themes/Default/Images/test.gif" Text="BtTest" />

    A+

  6. #6
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    Salut,
    tu peut publier le code asp de la GridView.

    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    J'ai trouvé une piste

    le gridview est défini ainsi :

    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
    21
    22
    23
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnLoad="GridView1_DataBinding" OnRowCommand="RowCommand">
            <Columns> 
     
     
                <asp:TemplateField HeaderText="Libelle">
                    <ItemTemplate>
                        <asp:HyperLink ID="Link" runat="server"
                         Text='<%# DataBinder.Eval(Container.DataItem,"libelleArt") %>'
                         NavigateUrl='<%# "~/Articles/DetailArticle.aspx?ID=" + DataBinder.Eval(Container.DataItem,"ArtId") %>' />
     
                    </ItemTemplate>
                    <ItemStyle Width="300px" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Quantite">
                    <ItemTemplate>
                    <asp:TextBox ID="QuantEcran" runat="server"
                                 CssClass="FormFieldsRight" Width="70px" Wrap="False" AutoPostBack="false" />
                    <asp:HiddenField ID="Quant" runat="server" 
                            Value='<%# DataBinder.Eval(Container.DataItem,"getArtQuantite") %>' />
                    <asp:HiddenField ID="SeqArt" runat="server" Value='<%# DataBinder.Eval(Container.DataItem,"getArtId") %>' />
                    </ItemTemplate>
                    <ItemStyle Width="80px" />
                </asp:TemplateField>
    Je n'ai qu'une partie car il y a les éléments principaux ici.

    asp:TextBox ID="QuantEcran" est alimenté par le contenu de <asp:HiddenField ID="Quant" runat="server"
    Value='<%# DataBinder.Eval(Container.DataItem,"getArtQuantite") %>' /> dans une méthode appelée "GridView1_DataBinding" qu'on retrouve dans le onLoad du GridView et c'est de là que vient le soucis car je repasse dans "GridView1_DataBinding" dès que je clique sur le bouton dont je parle plus haut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        protected void GridView1_DataBinding(object sender, EventArgs e)
        {
            if (GridView1.Rows.Count > 0)
            {
                foreach (GridViewRow row in GridView1.Rows)
                {
                    int Quant = Convert.ToInt32(((HiddenField)(row.Cells[1].Controls[3])).Value);
                    ((TextBox)(row.Cells[1].Controls[1])).Text = string.Format("{0}", Quant);
                }
            }
        }

    Edit :

    J'ai placé ispostback dans ma méthode GridView1_DataBinding

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        protected void GridView1_DataBinding(object sender, EventArgs e)
        {
            if (GridView1.Rows.Count > 0 & IsPostBack == false)
            {
                foreach (GridViewRow row in GridView1.Rows)
                {
                    int Quant = Convert.ToInt32(((HiddenField)(row.Cells[1].Controls[3])).Value);
                    ((TextBox)(row.Cells[1].Controls[1])).Text = string.Format("{0}", Quant);
                }
            }
        }
    et cela a résolu mon problème MAIS j'ai le sentiment de ne pas avoir développé tout cela correctement... donc tout commentaire est le bienvenu.

  8. #8
    Membre expérimenté Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Par défaut
    beh, ça explique tout,
    essay de mettre la valeur de control HiddenField directement dans le textBox par la même maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:TextBox ID="QuantEcran" runat="server"
                                 CssClass="FormFieldsRight" Width="70px" Wrap="False" 
    Text='<%<%# DataBinder.Eval(...)%>' 
    AutoPostBack="false" />
    et ellimine l'appel de la methode GridView1_DataBinding.

    A+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Merci beaucoup AJemni.

    Je peux effectivement retirer l'appel à GridView1_DataBinding

    Pfff j'en ai bavé sur cette bêtise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le nom d'un fichier dans une variable
    Par JeanDan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/07/2009, 18h12
  2. Requète SQL avec nom de table contenu dans une variable
    Par samoussa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/05/2009, 13h58
  3. [A-07] Plusieurs controles dans une variable
    Par Daniel-Gérald dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/03/2009, 15h33
  4. Valeur d'un controle dans une variable
    Par kevaccess dans le forum IHM
    Réponses: 3
    Dernier message: 07/04/2007, 16h15
  5. affectation d'un nom de classeur ouvert dans une variable
    Par nolive915 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2006, 10h55

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