Button dans un repeater [Résolu]

fguigui 10 Messages postés vendredi 31 août 2007Date d'inscription 16 octobre 2007 Dernière intervention - 15 oct. 2007 à 23:17 - Dernière réponse : fguigui 10 Messages postés vendredi 31 août 2007Date d'inscription 16 octobre 2007 Dernière intervention
- 16 oct. 2007 à 23:47
                                                                Bonjour à tous,

Dans une webform j'ai un Repeater à l'intérieur duquel j'ai des textbox, label et button du genre :

        <ctrl:RepeatBudgets ID="Repeater1" runat="server">
       
            <tr runat="server" id="row1">
            <td>
                ' />
            </td>
            <td>
                ' />
                '/>
            </td>
            <td>
                ' />
                ' />
            </td>
            <td>
                ' />
                ' />
            </td>
            <td>
                <ctrl:SubExerciceButton runat="server" Text="-" ID="SubExercice"/>
                <ctrl:MajExerciceButton runat="server" Text="Maj" ID="MajButton" CommandArgument='<%#((DateTime)Eval("Exercice")).ToShortDateString()%>' CommandName="Exercice"/>
            </td>
            </tr>
       
        </ctrl:RepeatBudgets>
Je souhaite en cliquant sur le bouton MajBouton, désactiver les labels (visible false) CGLB, CCLB, et CALB et activer les textbox (visible true) CGTB, CCTB, et CATB.

En cliquant sur le bouton MajButton d'une ligne affichée dans la page, on passe bien dans la méthode OnCommand du bouton qui fait :

        protected override void OnCommand(CommandEventArgs e)
        {
            foreach (Control c in this.Parent.Parent.Controls)
            {
                foreach (Control c2 in c.Controls)
                {
                    if (c2 is Label)
                    {
                        c2.Visible = false;
                    }

                    if (c2 is TextBox)
                    {
                        c2.Visible = true;
                    }
                }
            }
            this.Visible = false;
        }

Qui fait bien ce qu'il est sensé faire, cependant, cela ne fonctionne pas, pourquoi ? Que faut-il faire ?

Cordialement
Frédéric
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
jesusonline 6827 Messages postés dimanche 15 décembre 2002Date d'inscription 13 octobre 2010 Dernière intervention - 16 oct. 2007 à 01:10
3
Merci
Bonsoir,

Beurk que c'est pas beau :p

Apparement tu essayes de faire un tableau que l'on puisse passer en mode edition ? pourquoi ne pas essayer d'utiliser le contrôle GridView qui est justement là pour ça.

Sinon, si tu continues de perseverer dans ton truc pas beau, je te conseille de stocker l'index de la ligne sur lequel t'as cliqué dans le viewstate puis de t'abonner à l'événement itemdatabound, et c'est dans cet event que tu gères l'affichage de tel ou tels champs à partir de l'index stocké dans le viewstate. Mais c'est ce que fais le gridview en beaucoup plus propre.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de jesusonline
fguigui 10 Messages postés vendredi 31 août 2007Date d'inscription 16 octobre 2007 Dernière intervention - 16 oct. 2007 à 23:47
0
Merci
                                                          Salut Jesus (et tous les autres !),

J'ai vu la GridView c'est très simple à utiliser !
Cependant j'ai 2 petites questions complémentaires :
    - La clé de ma table est composée de 2 champs, en update un de ces champs est modifiable alors que ça ne devrait pas être possible (géré par .Net), pourquoi ?
    - Certains champs sont numeric(10,2), ils sont affichés avec une virgule (",", normal je dois être en culture fr-FR), mais quand je modifie ces valeurs si je ne remplace pas les "," par des "." j'ai un plantage sql :
Erreur de conversion du type de données nvarchar en numeric.
pourquoi ?

Merci encore !
A+
Cordialement
Frédéric
Commenter la réponse de fguigui

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.