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 :

GridView RowUpdating FindControl toujours null


Sujet :

ASP.NET

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut GridView RowUpdating FindControl toujours null
    Bonjour à tous,

    J'ai un problème assez basique qui commence légèrement à me rendre fou
    Sur ma page aspx, j'ai construit un gridview, auquel j'attribue un datasource dynamiquement dans mon code behind. Et je souhaite récupérer la valeur d'un textbox, lors de l'édition.

    Voici ma page aspx :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <asp:GridView runat="server" ID="grdAdmin" AutoGenerateColumns="false" OnRowCancelingEdit="grdAdmin_RowCancelingEdit" 
                     OnRowEditing="grdAdmin_RowEditing" OnRowUpdating="grdAdmin_RowUpdating" ShowFooter="True" OnRowCommand="grdAdmin_RowCommand">
    				    <HeaderStyle horizontalalign="Center" backcolor="blue" forecolor="White"/>
                        <Columns>
     
                            <asp:TemplateField HeaderText="Matricule">
                                <FooterTemplate>
                                    <asp:TextBox ID="add_ID" Runat="Server" />
                                </FooterTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblID" runat="server" Text='<%# Bind("ID_ADMIN") %>'></asp:Label>
                                    <%# !(bool)Eval("VALIDITE_ADMIN")?"<br/><font color='red'><i>(Désactivé)</i></font>":"" %>
                                </ItemTemplate>
                            </asp:TemplateField>
     
                            <asp:TemplateField HeaderText="Nom">
                                <FooterTemplate>
                                    <asp:TextBox ID="add_Nom" runat="Server" />
                                </FooterTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblNom" runat="server" Text='<%# Bind("DESIGNATION_ADMIN") %>'></asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:TextBox ID="txtNom" Text='<%# Bind("DESIGNATION_ADMIN") %>' runat="server" />
                                </EditItemTemplate>
                            </asp:TemplateField>
     
                            <asp:TemplateField HeaderText="Edition">
                                <ItemTemplate>
                                    <asp:LinkButton ID="lnkEdit" runat="server" CommandName="Edit" Text="Editer"></asp:LinkButton>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:LinkButton ID="lnkUpdate" runat="server" CommandName="Update" Text="Mettre à jour" CausesValidation="true"></asp:LinkButton>
                                    | <asp:LinkButton ID="lnkCancel" runat="server" CommandName="Cancel" Text="Annuler"></asp:LinkButton>
                                </EditItemTemplate>
                                <ItemStyle ForeColor="Blue" HorizontalAlign="Center" Width="15%" />
                            </asp:TemplateField>
     
                            <asp:TemplateField HeaderText="Actions">
                                <FooterTemplate>
                                    <asp:ImageButton ID="btnAdd" runat="server" ImageUrl="~/Images/add.gif" CommandName="Insert" AlternateText="Ajouter"/>
                                </FooterTemplate>
                                <ItemTemplate>
                                    <asp:ImageButton ID="btnActivate" runat="server" ImageUrl="~/Images/ok.png" CommandName="Activate" AlternateText="Activer" Visible='<%# !(bool)Eval("VALIDITE_ADMIN")%>'/>
                                    <asp:ImageButton ID="btnDesactivate" runat="server" ImageUrl="~/Images/close.png" CommandName="Desactivate" AlternateText="Désactiver" Visible='<%# (bool)Eval("VALIDITE_ADMIN")%>'/>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns> 
                    </asp:GridView>
    Et mon code behind :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    protected void Page_Load(object sender, EventArgs e)
            {
                if (! Page.IsPostBack)
                {
                    LoadData();
                }
            }
     
            private void LoadData()
            {
                using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnection"].ToString()))
                {
                    connection.Open();
     
                    string req = "SELECT * FROM ADMINISTRATEUR";
                    SqlCommand command = new SqlCommand(req, connection);
                    SqlDataReader reader = command.ExecuteReader();
     
                    grdAdmin.DataSource = reader;
                    grdAdmin.DataBind();
     
                    connection.Close();
                }
            }
     
            public void grdAdmin_RowEditing(Object sender, GridViewEditEventArgs e)
            {
                grdAdmin.ShowFooter = false;
                grdAdmin.EditIndex = e.NewEditIndex;
                LoadData();
            }
     
            public void grdAdmin_RowCancelingEdit(Object sender, GridViewCancelEditEventArgs e)
            {
                grdAdmin.ShowFooter = true;
                grdAdmin.EditIndex = -1;
                LoadData();
            }
     
            public void grdAdmin_RowUpdating(Object sender, GridViewUpdateEventArgs e)
            {
                string ID = ((Label)grdAdmin.Rows[e.RowIndex].FindControl("lblID")).Text;
                string name = ((TextBox)grdAdmin.Rows[e.RowIndex].FindControl("txtNom")).Text;
     
                string request = "UPDATE ADMINISTRATEUR SET DESIGNATION_ADMIN='" + name + "' WHERE ID_ADMIN = '" + ID + "'";
     
                using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["EER_PRO_ConnectionString"].ToString()))
                {
                    connection.Open();
     
                    SqlCommand command = new SqlCommand(request, connection);
                    command.ExecuteNonQuery();
     
                    connection.Close();
                }
     
                grdAdmin.EditIndex = -1;
                LoadData();
            }
    J'ai cherché pas mal dans la matinée sur ce problème, mais j'ai l'impression de tout bien faire.
    Je ne recharge que lorsque c'est nécessaire, pas à chaque fois. Je le fais bien à chaque fin de mes méthodes. Bref je comprends pas du tout, pquoi lors du owUpdating, FindControl("txtNom") est toujours null

    Quelqu'un aurait il une piste la dessus ?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut
    Personne ne pouvait trouver la solution, puisque je ne vous avait pas montré ma méthode RowCommand.
    J'ai codé des actions particulières dans cette méthode et à chaque passage dedans je refaisais le binding. Alors qu'il ne fallait le faire que pour mes actions particulières .

    Une journée de boulot perdue pour trouver qu'il faut enlever un LoadData() de trop... j'suis d'un productif moi

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

Discussions similaires

  1. text area value toujours nulle
    Par keub51 dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2007, 11h54
  2. Findcontrol retourne null
    Par Kiwi_violet dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/04/2007, 12h21
  3. Réponses: 2
    Dernier message: 05/02/2007, 13h39
  4. fopen renvoi toujours NULL
    Par kissmytoe dans le forum C
    Réponses: 6
    Dernier message: 01/11/2006, 20h01
  5. Réponses: 2
    Dernier message: 30/03/2006, 16h18

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