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 :

Filtrage et DataSourceID


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Par défaut Filtrage et DataSourceID
    Bonjour à tous,


    Je débute actuellement dans l'asp.NET et je m’intéresse en ce moment au GridView.
    J'ai un peu étudier le comportement des liaisons de données que propose ce contrôle et j'ai vu qu'il à 2 façons principales de liées les données à ce controle.

    1°) On créer une source de donnée SqlDataSource coté dans le front en lui donnant un ID(c'est à dire dans la page aspx elle-même.) Et ensuite on précise au controle GridView, avec l'attribut DataSourceID le même ID qu'on a attribué à la source de donnée.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <%-- La source de donnée qui appelle une procédure stockée --%>
    <asp:SqlDataSource ID="idSourceDonnee"
             ConnectionString="<%$ ConnectionStrings:KelassurConnectionString1 %>"
             SelectCommand="usp_GetListePartenaires"
                runat="server" SelectCommandType="StoredProcedure" /> 
     
            <%--  Rendu visuel de la GridView Partenaire avec la liaison à la source de donnée--%>
            <asp:GridView ID="lstPartenaires" runat="server" DataSourceID="idSourceDonnee" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="PartenaireID" Width="292px" ForeColor="Black" GridLines="Horizontal">

    2°) Sinon on peux écrire cela dans le fichier .cs associé à la page web aspx (que l'on appelle behind il me semble)

    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
    //Classe permettant d'effectuer l'appel à la procédure stockée dans un fichier .dbml
     ptrns = DataManager.GetListePartenaires().ToList();
     
    //Possibilité de filtrage (on suppose que les champs sont présent sur la page web afin de pouvoir renseigner les différents filtres
    var data = (from p in ptrns
                           where ((RaisonSocialeFiltre == null) || ((!string.IsNullOrEmpty(p.RaisonSociale)) && (Regex.IsMatch(p.RaisonSociale, RaisonSocialeFiltre, RegexOptions.IgnoreCase))))
                           && ((EtatFiltre == null) || (p.EtatPartenaireID == (int)EtatFiltre))
                           && ((QualiteFiltre == null) || (p.QualitePartenaireID == (int)QualiteFiltre))
                           && ((DepartementFiltre == null) || ((p.CodePostal != null) && (p.CodePostal.ToString().PadLeft(5, '0').Substring(0, 2) == DepartementFiltre)))
                           && ((VilleFiltre == null) || ((!string.IsNullOrEmpty(p.Ville)) && (Regex.IsMatch(p.Ville, VilleFiltre, RegexOptions.IgnoreCase))))
                           select p).ToList();
     
               //Liaison des nouvelles données filtrées au controle GridView
                lstPartenaire.DataSource = data;
                lstPartenaire.DataBind();
    Jusque là, je pense avoir saisi la différence entre les 2 modes.

    Cependant, j'ai une question assez banal : Est-il possible d'effectuer une opération de filtrage pour la 1er méthode (comme celle indiqué dans la 2eme méthode par exemple) ou alors faut-il indiquer une autre source de données avec une autre procédure stockée qui se chargera d'effectuer le filtrage et changer la propriété DataSourceID associé à l’événement voulu (par exemple lors d'un clic sur un bouton radio) ?

    Car malheureusement, il est impossible d'avoir les 2 propriétés sur la même GridView.

    ça peut paraître un peu bête comme question mais cela fait 2 jours que je tente désespérément de trouver une réponse sur le net, et je n'ai aucune information de ce coté.

    Merci d'avance !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Par défaut
    Re-Bonjour,

    Finalement il m'auras fallu 2jours et demi pour trouver la solution à mon problème : Filtrage avec la balise SqlDataSource

    J'aurais cependant une autre question : Quel est l'avantage d'utiliser une méthode par rapport à l'autre ? Séparation du code ? propreté ? encapsulation ?

    Je rajoute également une autre question : Peut-on appliquer plusieurs filtres sur le même DataSource ? Par exemple, mettre 2 champs de texte, dont le 1er filtre le nom, et le second le code postal par exemple ?

    Merci d'avance !

  3. #3
    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
    Citation Envoyé par Delack
    Quel est l'avantage d'utiliser une méthode par rapport à l'autre ? Séparation du code ? propreté ? encapsulation ?
    La méthode n° 1, via un SqlDataSource te contraint à rentrer dans un moule. Tu es limité aux fonctionnalités proposées par cet objet. L'avantage principal c'est que c'est facile à manipuler. Ca peut servir pour faire du quick and dirty, ou pour des besoins très simples.

    La solution n°2, via le code behind te permet de t'affranchir des contraintes imposées par l'objet SqlDataSource. C'est toi qui maîtrise tout, de A à Z. Ca n'est pas forcément plus complexe, mais ça peut le devenir si ton projet le nécessite.

    Citation Envoyé par Delack
    Peut-on appliquer plusieurs filtres sur le même DataSource ? Par exemple, mettre 2 champs de texte, dont le 1er filtre le nom, et le second le code postal par exemple ?
    Pour l'objet SqlDataSource, je ne l'utilise jamais donc je ne sais pas. Je pense que ça doit être faisable, mais ça reste à confirmer. En revanche si tu passes par le code behind, c'est très simple à mettre en oeuvre, il suffit de rajouter une clause WHERE dans la requête, puis d'ajouter des objets de type SqlParameter afin de lui passer les valeurs de tes textbox.
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 118
    Par défaut
    Ok, merci pour ces réponses et ces précisions !

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

Discussions similaires

  1. Filtrage des paquets de la carte réseau
    Par sommerset dans le forum Réseau
    Réponses: 3
    Dernier message: 15/06/2005, 10h38
  2. filtrage d'une table interbase
    Par kouraichi35 dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/11/2004, 13h08
  3. filtrage d'une chaine de caractéres
    Par localhost dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 20/09/2003, 01h11
  4. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  5. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44

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