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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 29
    Points
    29
    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 : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Page.FindControl(taVariable)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 29
    Points
    29
    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 actif 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
    Points : 290
    Points
    290
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 29
    Points
    29
    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 actif 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
    Points : 290
    Points
    290
    Par défaut
    Salut,
    tu peut publier le code asp de la GridView.

    A+

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 29
    Points
    29
    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 actif 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
    Points : 290
    Points
    290
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 29
    Points
    29
    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