Button dans un repeater

Résolu
fguigui Messages postés 10 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 16 octobre 2007 - 15 oct. 2007 à 23:17
fguigui Messages postés 10 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 16 octobre 2007 - 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

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 oct. 2007 à 01:10
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
3
fguigui Messages postés 10 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 16 octobre 2007
16 oct. 2007 à 23:47
                                                          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
0
Rejoignez-nous