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 :

ObjectDataSource


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 122
    Par défaut ObjectDataSource
    Bonjour
    je voudrai exécuter un select qui prend comme paramètres les cases coché par l'utilisateur,j'utilise les procédures stockés alors j'ai pas su rendre le select dynamique selon le choix de l'utilisateur...j'utilise un objectdatasource.
    la solution que j'ai trouvé c d'utiliser le code suivant :
    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
     
     
    string str;
    ...
    protected void Button2_Click(object sender, EventArgs e)
            {
                str = "SELECT  [ID] ";
                if (CheckBox1.Checked == true)
                           { str = str + ", demande"; }
     
                if (CheckBox2.Checked == true)
                           { str = str + ", direction"; }
     
                if (CheckBox3.Checked == true)
                           { str = str + ", statut"; }
     
                str = str + " FROM [Tprojet] ;";
     
                ObjectDataSource1.SelectMethod = str;
                ObjectDataSource1.DataBind();
     
            }
    ca marche pas,malheuresement je trouve pas de methodes (selectcommande) pr lobjectdatasource....

    Quelqu'un sauras m'aider svp ??

    merci bcp d'avance !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    La propriété SelectCommand est supposée être le nom d'une méthode, pas une requête SQL... Un ObjectDataSource ne sert pas à ça, si tu veux récupérer des données à l'aide d'une requête SQL, utilise un SqlDataSource

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 122
    Par défaut
    t'as raison...c'est ce que je viens de faire :
    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
     
    protected void Button2_Click(object sender, EventArgs e)
            {
                str = "SELECT  ID AS ItemId ";
     
                 if (CheckBox1.Checked == true)
                    { 
                    str = str + ", demande";
                    }
     
                 if (CheckBox2.Checked == true)
                    {
                    str = str + ", direction";   
                    }
     
                 if (CheckBox3.Checked == true)
                    { 
                    str = str + ", statut";   
                    }
     
                str = str + " FROM [Tprojet] ;";
     
                SqlDataSource1.SelectCommand = str;
                SqlDataSource1.DataBind();
                RadGrid1.DataBind();

    et dans le code source du SqldataSource:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        DeleteCommand="ProjetDelete" DeleteCommandType="StoredProcedure" InsertCommand="ProjetInsert"
        InsertCommandType="StoredProcedure" 
        UpdateCommand="ProjetUpdate" UpdateCommandType="StoredProcedure" >
    dans le 2ème code je n'ai pas specifié le SelectCommand parce que c'était fait dans le premier code.

    le programme ne marche pas et m'affiche cette erreur lors de l'exécution :

    A critical error has occurred:
    There was a problem extracting DataKeyValues from the DataSource. Please ensure that DataKeyNames are specified correctly and all fields specified exist in the DataSource.


    qu'est-ce que tu en penses ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Dans ta grille, il faut que tu définisses la liste des clés primaires de la table (propriété DataKeyNames)

    Par contre je ne comprends pas trop l'intérêt de construire dynamiquement la requête dans ton cas... tu peux toujours mettre tous les champs dans le SELECT et n'afficher que ceux qui t'intéressent

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 122
    Par défaut
    je t'explique...la table contient une dizaine de champs...
    c'est à l'utilisateur de choisir les champs qu'il désire voir et mettre a jour...
    j'utilise la plateforme DotNetNuke si t'as dèja utilisè et je suis obligè de passer par les procèdures stockées afin de respecter le module MVC


    revenons a mon exemple,finalement l'affichage marche comme il faut après l'utilisation du sqldatasource,mais pour la mise a jour (update,delete,insert) que j'ai specifiè a travers des procèdures stockès ca ne marche pas.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai jamais utilisé de procédures stockées avec SqlDataSource, donc je dis peut-être une connerie, mais je pense qu'il faut que chaque paramètre de la procédure stockée corresponde à un champ sélectionné, sinon le SqlDataSource peut pas savoir quelle valeur passer pour un paramètre donné...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/02/2007, 18h46
  2. [WebForms][2.0] deux ObjectDataSource de même TypeName posent problème
    Par stephane.net dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/11/2006, 09h55
  3. [C#][2.0] ObjectDataSource, paramètres typés
    Par tooff dans le forum ASP.NET
    Réponses: 3
    Dernier message: 29/06/2006, 20h10
  4. [ADO.Net/C# 2.0]Comment coder ObjectDataSource pour Design?
    Par NeoMan dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/02/2006, 15h04
  5. [C#][2.0] ObjectDataSource
    Par ddoc dans le forum ASP.NET
    Réponses: 3
    Dernier message: 01/02/2006, 18h06

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