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 :

Checkbox erreur avec asp.net C#


Sujet :

ASP.NET

Vue hybride

Mathildas1 Checkbox erreur avec asp.net... 14/09/2015, 17h08
DotNetMatt La syntaxe de ta requête SQL... 14/09/2015, 17h18
Mathildas1 Merci pour votre réponse, ... 15/09/2015, 06h59
Dokho1000 A quoi sert la jointure dans... 15/09/2015, 11h19
Mathildas1 Merci!! Mais j'ai besoin de... 15/09/2015, 12h00
jopopmk Salut, plusieurs remarques... 15/09/2015, 13h16
Mathildas1 Salut, C'est maintenant... 15/09/2015, 19h02
Dokho1000 Est ce que dans ton code tu... 17/09/2015, 08h44
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 10
    Par défaut Checkbox erreur avec asp.net C#
    Bonsoir, je suis débutant en Asp.NET et j'ai un problème avec mon code qui est sensé rendre un champ checkbox disponible oui occuper
    Voila mon code aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4" DataKeyNames="Num_1,Num_2" DataSourceID="SqlDataSource1" GridLines="Horizontal">
                <Columns>
                    <asp:BoundField DataField="Num_1" HeaderText="Num_1" ReadOnly="True" SortExpression="Num_1" />
                    <asp:BoundField DataField="Num_2" HeaderText="Num_2" ReadOnly="True" SortExpression="Num_2" />
                    <asp:TemplateField HeaderText="Disponibilités" SortExpression="Disponibilités">
     
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged" Checked='<%# Convert.ToBoolean(Eval("Disponibilités")) %>' Text='<%# Eval("Disponibilités").ToString().Equals("True") ? " Occuper " : " Disponible " %>' Enabled="true" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    et voici mon code aspx.cs
    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
     
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;
     
    public partial class accees : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
     
        protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox CheckBox1 = (CheckBox)sender;
            GridViewRow row = (GridViewRow)CheckBox1.NamingContainer;
     
            String selection = row.Cells[1].Text;
            bool check = CheckBox1.Checked;
     
            OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["avConnectionString"].ConnectionString);
            conn.Open();
            String update = "UPDATE dispo SET dispo.Occupation = @dispo.Occupation FROM dispo INNER JOIN compte ON dispo.Num_2 = compte.Num_2 WHERE dispo.Num_1 = compte.Num_1";
     
            OleDbCommand com = new OleDbCommand(update, conn);
            com.Parameters.Add("Disponibilités", OleDbType.Char).Value = selection;
            com.Parameters.Add("Num_1", OleDbType.LongVarChar).Value = check;
     
            com.ExecuteNonQuery();
     
            conn.Close();
        }
    }
    et j'ai un erreur quand je check le checkbox "Syntax error (missing operator) in query expression '@dispo.Occupation FROM dispo INNER JOIN compte ON dispo.Num_2 = compte.Num_2'"
    tout les idées d'aides sont les bienvenues, Merci

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    La syntaxe de ta requête SQL n'est pas valide, notamment à cause du point dans le nom du paramètre dispo.Occupation. Tu devrais plutôt avoir quelque chose comme ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE dispo SET dispo.Occupation = @dispoOccupation FROM dispo INNER JOIN compte ON dispo.Num_2 = compte.Num_2 WHERE dispo.Num_1 = compte.Num_1

    En prime on peut également constater que tu injectes 2 paramètres, alors que tu n'en as besoin que d'un seul (@dispoOccupation) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    OleDbCommand com = new OleDbCommand(update, conn);
    com.Parameters.Add("Disponibilités", OleDbType.Char).Value = selection;
    com.Parameters.Add("Num_1", OleDbType.LongVarChar).Value = check;
    Devrait donc devenir :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var com = new OleDbCommand(update, conn);
    com.Parameters.Add("@dispoOccupation", OleDbType.Char).Value = selection;
    Ou quelque chose de ce genre.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 10
    Par défaut
    Merci pour votre réponse,
    Mais ça marche pas encore c'est toujours la même erreur avec la requete.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    A quoi sert la jointure dans ton update ??? A mon avis tu peux t'en passer ce qui t'évitera des problèmes de performance plus tard.
    Je ne suis pas certain mais j'ai un souvenir que, en oledb, dans la requête tu dois mettre un ? à la place du nom de paramètre (@nom) et ensuite respecter l'ordre dans l'ajout des paramètre à la collection.

    Si ce n'est pas ca, alors il faut préciser aussi le @ dans le nom du paramètre...

    C'est un des 2

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 10
    Par défaut
    Merci!!
    Mais j'ai besoin de cette jointure parce que dans la requete dispo et compte sont deux table et dispo depend de compte pour que la disponibilités de la table dispo soit checked, en plus j'ai deja essaie sans la jointure mais ça marche pas.
    Merci pour votre réponse, je vais y voir de ce côté.

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    plusieurs remarques :
    - les paramètres doivent être définis avec le @ dans leur nom lors de l'ajout,
    - les paramètres doivent avoir le même nom que dans ta requête,
    - tu ajoutes un paramètre Num_1 qui n'est pas référencé dans ta requête,
    - tu utilises un type LongVarChar pour un paramètre booléen en cast implicite.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 10
    Par défaut
    Salut,

    C'est maintenant que je me rend compte que Num_1 n'est pas definis dans Update, et peux tu me dire comment pourrai je le definir parce que la j'en ai aucune idée de comment pourrai je le faire.
    Pour le type booléen, c'est que je l'avait déclaré en type Booléen mais y avait une erreur donc je l'ai changé en type Long VarChar.
    Merci

  8. #8
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Je te conseille donc de regarder OleDbParameter, OleDbCommand, OleDbType et n'hésite pas à suivre les liens qui y sont proposés.

    Un exemple générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OleDbCommand cmd = new OleDbCommand("SELECT field FROM table WHERE id = @id", cnx);
    cmd.Parameters.Add("@id", OleDbType.Int32).Value = 123;
    Pour le type du paramètre Num_1 c'est pas au petit bonheur la chance, ça dépend de ton schéma en base.
    Si c'est un booléen il faut utiliser OleDbType.Boolean (et pas besoin de caster ton checked),
    Si c'est un caractère (O/N) il faut utiliser OleDbType.Char et caster ton checked (checked ? 'O' : 'N'),
    Si c'est un entier (0/1) il faut utiliser OleDbType.Int16 ou Int32 et caster ton checked (checked ? 1 : 0).

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Est ce que dans ton code tu initialise ta checkbox ? Si oui dans quel évenement ?

Discussions similaires

  1. erreurs avec asp.net affichage web
    Par dorian2031 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/02/2007, 11h09
  2. Erreur connexion asp.net oracle
    Par WELCOMSMAIL dans le forum Connexions aux bases de données
    Réponses: 9
    Dernier message: 05/04/2006, 09h07
  3. probleme css avec asp.net
    Par toddy_101 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/03/2006, 11h37

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