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 :

Comment modifier dynamiquement un controle contenu dans un GridView ?


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 25
    Points
    25
    Par défaut Comment modifier dynamiquement un controle contenu dans un GridView ?
    Bonjour, je vous explique mon problème :

    J'ai un GridView : gvContrat

    Il a pour source un sqlDataSource, et il affiche les données concernant le contrat d'un client.

    A priori ca marche bien, mais je cherche à exécuter du code quand le gridview est en mode édition.

    En effet,dans mon EditTemplate, dans une colonne, j'ai un DropDownList (ID="DdlDflex") qui peut avoir commen valeur "oui" ou "non". Très simple, donc.
    Dans une autre colonne j'ai un TextBox ("ID=TextBox1").

    Ce que je voudrais c'est que si mon dropdownlist est égal à "non" alors mettre par défaut le textbox de l'autre colonne à 0, et le mettre aussi en ReadOnly.
    Pour cela, j'ai fait cette fonction :

    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
    protected void DdlDflex_SelectedIndexChanged(object sender, EventArgs e)
        {
            //gvContrat.DataBind();
     
            if (((DropDownList)gvContrat.FindControl("DdlDflex")).SelectedValue == "non")
            {
                ((TextBox)gvContrat.FindControl("TextBox1")).Text = "0";
                ((TextBox)gvContrat.FindControl("TextBox1")).ReadOnly = true;
            }
            if (((DropDownList)gvContrat.FindControl("DdlDflex")).SelectedValue == "oui")
            {
                //((TextBox)gvContrat.FindControl("TextBox1")).Text = "";
                ((TextBox)gvContrat.FindControl("TextBox1")).ReadOnly = false;
            }
        }
    Seulement cela provoque une erreur quand je change la valeur du DropDownList, et donc quand j'exécute la fonction ci dessus:

    La référence d'objet n'est pas définie à une instance d'un objet.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

    Erreur source:


    Ligne 64 : gvContrat.DataBind();
    Ligne 65 :
    Ligne 66 : if (((DropDownList)gvContrat.FindControl("DdlDflex")).SelectedValue == "non")
    Ligne 67 : {
    Ligne 68 : ((TextBox)gvContrat.FindControl("TextBox1")).Text = "0";
    Comment éviter cette erreur ? J'suis au bord de la crise de nerfs là

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 212
    Points
    212
    Par défaut
    verifies à cet instant si ton dropdownlist est rempli et ton autre controls aussi
    verifies aussi tu as beaucoup d'evenement qui peuvent peut etre t'aider dans le gridview

    PS ca ne marche pas car tu n'indiques pas la colonne (rows)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Merci X-Nem j'espère trouver la solution avec ton aide

    Quelles méthodes utiliserais tu pour faire les tests dont tu parles ?
    Puis je pousser jusqu'a te demander un petit exemple ? (je débute en fait en .net :s )

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 212
    Points
    212
    Par défaut
    bah c pour chaque ligne que tu dois faire ca c ca?

    je dirai dans ton evenement gv_contrat_databound

    une boucle for qui va parcourir toutes les lignes de ton gv

    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
    for(cpt=0;cpt=GVInterloc.Rows.Count-1;cpt++)
    {
     
                #region Desactivation des checkbox si l'user n'est pas admin
                if (Session["userRole"].ToString() != "1")
                {
                    ((CheckBox)GVInterloc.Rows[cpt].FindControl("CheckBoxAPM")).Enabled = false;
                    ((CheckBox)GVInterloc.Rows[cpt].FindControl("CheckBoxDEBIT")).Enabled = false;
                    GVInterloc.ShowFooter = false;
                }
                #endregion
     
     
            }
    }

    EDIT Ah c'est juste pour ton mode edition

    bah alors sur l'evenement load de ton textbox tu regarde si ton Gridview est en mode Edition en regarder la propriété EditIndex de ton gridview
    puis tu dois aussi dire sur quelle Row tu travailles c'est pour ca que ca ne marche pas
    et tu peux aussi caster ton object pour ton DDL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DropDownList DDL = sender as DropDownList;
    dans le cas si tu travailles sur un evenement de la dropdownlist
    ps je commence aussi en asp.net ca fait depuis quelques mois

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 212
    Points
    212
    Par défaut
    sinon ca sera ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ((TextBox)gvContrat.Rows[gvContrat.EditIndex].FindControl("TextBox1"))Textt;
    ((DropDownList)gvContrat.Rows[gvContrat.EditIndex].FindControl("NomDDL")).SelectedValue
    ou sinon
    tu déclares directement
    TextBox TextBox1 =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ((TextBox)gvContrat.Rows[gvContrat.EditIndex].FindControl("TextBox1"));
    ((DropDownList)gvContrat.Rows[gvContrat.EditIndex].FindControl("NomDLL"));
    comme ca tu n'aurais plus a mettre tout le temps cette ligne de code
    mais juste TextBox1 ou nomDDL qqe chose

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Je te remercie bcp X-nem, j'ai corrigé mon erreur, il fallait en effet indiquer la ligne a modifier.
    Ca semble évident après coup, mais ce n'est jamais facile à identifier.

    Merci encore

  7. #7
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 212
    Points
    212
    Par défaut
    Citation Envoyé par Beaveroli
    Je te remercie bcp X-nem, j'ai corrigé mon erreur, il fallait en effet indiquer la ligne a modifier.
    Ca semble évident après coup, mais ce n'est jamais facile à identifier.

    Merci encore
    je t'en prie par contre tu ne travailles pas sur le bon evenement comme je t'ai dit

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

Discussions similaires

  1. [VB6]comment supprimer dynamiquement un controle dynamique?
    Par totor le troll dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/07/2011, 21h10
  2. Réponses: 4
    Dernier message: 30/06/2011, 13h12
  3. Réponses: 1
    Dernier message: 01/05/2006, 11h17
  4. Réponses: 2
    Dernier message: 31/10/2005, 22h04
  5. [Texte] comment modifier dynamiquement ?
    Par frelep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/09/2005, 11h46

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