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 :

[VB.NET] gridview rowupdating: La référence d'objet n'est pas définie à une instance d'un objet.


Sujet :

ASP.NET

  1. #21
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 13
    Points : 15
    Points
    15
    Par défaut la galerre avec gridvieuw
    bonjour


    j'ai résolu le probleme je te remerci parce que tu m'a mit dans la bonne piste

  2. #22
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par davjan Voir le message
    Hello voilà comment il faut procéder.

    dans la partie aspx tu n'utilise pas les controles aspBoundField mais tu définit des templates: un pour le mode visualisation et un pour le mode édition.Dedans tu met des texboxs ou autre pour lesquels tu peux mettre un identifiant qui te servira après, soit:

    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
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                AutoGenerateEditButton="True" DataKeyNames="truc"
                OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" 
              onrowupdated="GridView1_RowUpdated" 
                 ShowFooter="false" 
                onrowcommand="GridView1_RowCommand">
                <Columns>
                      <asp:TemplateField HeaderText="nom" SortExpression="nom">
                        <EditItemTemplate>
                            <asp:TextBox  ID="Label1" runat="server" Text='<%# Bind("nom") %>' />
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:TextBox  ID="Label2" runat="server"  Text='<%# Eval("nom") %>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="truc" SortExpression="truc" > 
                        <EditItemTemplate>
                            <asp:TextBox  ID="Label3" runat="server" Text='<%# Bind("truc") %>' TextMode ="MultiLine"  />
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:TextBox  ID="Label4" runat="server"  Text='<%# Eval("truc") %>' />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <EditRowStyle BackColor="#FF99CC" />
     
            </asp:GridView>
    Dans mon exemple ma base contient deux colonnes : nom et truc, à toi d'adapter le code pour qu'il correspond à tes champs.

    Dans le 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
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                populateGridView();
     
            }
        }
        private void populateGridView()
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");
            conn.Open();
            SqlCommand comm = new SqlCommand("select * from gens", conn);
            GridView1.DataSource = comm.ExecuteReader();
            GridView1.DataBind();
            conn.Close();
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
     
            TextBox t1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Label1"); 
     
            TextBox t3 = (TextBox) GridView1.Rows[e.RowIndex].FindControl("Label3")  ;
            update(t3.Text, t1.Text); 
    GridView1.EditIndex = -1;
            populateGridView();
     
     
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            populateGridView();
        }
     
     
        private void update(string text,string nom)
        {
            SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");
            conn.Open();
            SqlCommand comm = new SqlCommand("update gens set truc='" + text.Trim() + "' where nom='" + nom.Trim() + "';", conn);
            comm.ExecuteNonQuery();
            conn.Close();
     
     
        }
    Les fonctions sont les suivante:- PopulateGridView qui remplit la GridView avec la source de donnée.
    -Update qui modifie dans la base suivant les modifications fait dans les controles.
    - row_Updating qui transmet à update ces modifications. Tu noteras que l'on peux utiliser findControl cette fois puisque les templates contiennent des controles avec des id.
    -Et row_editing qui initialise l'édition.
    Il faut faire bien attention de mettre if (!IsPostBack) avant le populateGridView du pageLoad car sinon lorsque tu clic sur update , cela déclenche un postback et les controles reprennent leur valeur de départ malgré le fait que tu ai tapé autre chose.

    à plus

    pardon j'ai pas réfléchis j'ai tout fais en c# . tu pourras traduire?


    bonjour davjan,
    je viens de mettre en application tes recommandations et en ce moment je suis passé de ça à ça parce que mon code marche avec perfection.
    merci à toi et à tous ceux qui ont tenté de m'aider. merci à yolak qui s'est penché le premier sur mon cas et vive developpez.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/11/2013, 10h24
  2. Réponses: 2
    Dernier message: 01/08/2013, 15h40
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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