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 :

Faire le filtrage dans un GridView


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Faire le filtrage dans un GridView
    Salut

    Je suis confronté à ce souci que je suis sur y a plein de gens qui l'ont rencontré. L'ennui c'est que je ne retrouve pas le lien vers un tuto qui expliquerais ça comme il faut.

    Mais surtout, je suis confronté à un souci que j'ai un peu de mal à résoudre.

    Mon GridView est placé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:SqlDataSource ID="sdsPageListe" runat="server" ConnectionString="<%$ ConnectionStrings:CS %>"></asp:SqlDataSource>
    <asp:GridView ID="gvPageListe" runat="server" DataSourceID="sdsPageListe" AutoGenerateColumns="false" DataKeyNames="Id_Page">
    		</asp:GridView>
    Puis dans mon code Behind je mets un requête de Select pour le SQLDataSource et je charge mes colonnes de GRidView à la main.
    Maintenant je vais mettre une DropDownList dans le Header de chauqe colonne.

    Mon souci est le suivant : comment j'envoi la clause Where de la requête de sélection ?
    Est ce que la méthode est de redéfinir la requête à la volée et de refaire une DataBind du GridView ?
    Ou, est ce que je peux remettre ça avec une DataTable et utiliser le Select de DataTable ?

    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Dans ta requete tu mets des prametres tout simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where champ1=@valeur
    après dans ton sqlDatasource tu dis où valeur va chercher sa donnée. et le tour est joué

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide. ça semble effectivement simple, mais j'ai un peu de mal à suivre.

    Donc je fabrique mon sqlDataSource avec une SelectCommand qui va contenir une requêt SELECT avec une clause WHERE prenant en compte les champ que je compte filtrer sur le modèle que tu donne.

    Mais ensuite, c'est là que j'ai du mal. Comment je lui dis à quoi correspond @valeur ?

    Je crois que j'ai aussi du mal pour mettre une DDL dans le Header. A part côté HTML j'ai pas trouvé de moyen. Mais une fois mis de ce côté, j'arrive pas bien à repointer sur la DDL.

    Est ce que tout ceci ne serait pas lié ?

  4. #4
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Ben @valeur doit bien être renseigné pour faire le filtre,,

    ça peut être soit un contrôle,session,querystring,profile, etc

    après c'est à toi de définir à quoi il est lié..

    tu n'as absolument rien à écrir en code tout est automatique avec VS.

    ce sont des choses de base en asp.net.. je te recommande d'aller faire un tour dans la MSDN ou la page des tutos car tu ne semble pas avoir compris quelques points de base de asp.net/ado.net

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide, je pense que je vais m'épargner la fatigue de la révision ADO.NET. ça serait malheureux à mon âge avec l'expérience que j'ai.

    Mais ce que je ne comprends pas c'est comment on définit la valeur, comment on la raccroche au controle. Et ça ce n'est pas expliqué dans la MSDN.

    Le côté automatique avec VS c'est bien, mais faut il encore pouvoir le trouver.

    Donc, j'ai mon GridView. Par le côté HTML j'ai réussi à mettre une DDL dans le Header d'une colonne. Maintenant, comment je fais pour dire que @Valeur prend la valeur sélectionnée dans la DDL ?

    Je crois que j'ai réussi à déterminer mon problème.

  6. #6
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Bon, j'ai réussi à avancer mais maintenant je suis confronté à deux soucis :
    - comment je fais pour mettre mes DDL dans le Header du GridView ?
    - pourquoi le deuxième filtre ne marche pas tant que le premier n'est pas activé ?

    Voici le code que j'ai mis en place, uniquement côté HTML. ça m'embête pas mal car dans pas mal de cas, j'ai plutôt besoins de gérer ça en CodeBehind. Par exemple, souvent, j'ai besoins d'envoyer une "Request.Url.Host" en tant que paramettre d'une requête de sélection et je ne vois pas comment le faire autrement qu'en CodeBehind.

    Bon, enfin, ça c'est du détail qui se régle aprés. Pour l'instant je n'arrive vraiment pas à comprendre pourquoi mes filtre ne sont pas "indépendant"

    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
     
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
    	AutoGenerateColumns="False" DataSourceID="sdsBien2" DataKeyNames="id_bien" PageSize="25">
    	<Columns>
    		<asp:BoundField DataField="id_bien" HeaderText="id_bien" InsertVisible="False" ReadOnly="True"	SortExpression="id_bien" />
    		<asp:BoundField DataField="EnLigne" HeaderText="EnLigne" SortExpression="EnLigne" />
    		<asp:BoundField DataField="etat_bien" HeaderText="etat_bien" SortExpression="etat_bien" />
    		<asp:BoundField DataField="flag_bien" HeaderText="flag_bien" SortExpression="flag_bien" />
    		<asp:BoundField DataField="id_nego" HeaderText="id_nego" SortExpression="id_nego" />
    		<asp:BoundField DataField="PrixSouhait" HeaderText="PrixSouhait" SortExpression="PrixSouhait" />
    	</Columns>
    	<PagerSettings Mode="NumericFirstLast" />
    </asp:GridView>
    <asp:DropDownList ID="lstTest" runat="server" AutoPostBack="true"> 
    	<asp:ListItem Text="Choisir" Value=""></asp:ListItem>
    	<asp:ListItem Text="Oui" Value="1"></asp:ListItem>
    	<asp:ListItem Text="Non" Value="0"></asp:ListItem>
    </asp:DropDownList>
    <asp:DropDownList ID="lstType" runat="server" AutoPostBack="true"> 
    	<asp:ListItem Text="Choisir" Value=""></asp:ListItem>
    	<asp:ListItem Text="Info" Value="1"></asp:ListItem>
    	<asp:ListItem Text="Estim" Value="2"></asp:ListItem>
    	<asp:ListItem Text="Mandat" Value="3"></asp:ListItem>
    </asp:DropDownList>
    <asp:SqlDataSource ID="sdsBien2" runat="server" ConnectionString="<%$ ConnectionStrings:Acced %>"
    	SelectCommand="SELECT [id_bien], [EnLigne], [etat_bien], [flag_bien], [id_nego], [PrixSouhait] FROM [Biens]" FilterExpression="Enligne = '{0}' AND flag_bien = '{1}'"
    >
    	<FilterParameters>
    	<asp:ControlParameter ControlID="lstTest" Name="EnLigne" PropertyName="SelectedValue" />
    	<asp:ControlParameter ControlID="lstType" Name="Flag" PropertyName="SelectedValue" />
    	</FilterParameters>
    </asp:SqlDataSource>
    Merci pour votre aide.

Discussions similaires

  1. comment faire fonctionner de l'ajax dans un gridview?
    Par igorzup dans le forum Framework .NET
    Réponses: 0
    Dernier message: 04/06/2009, 16h56
  2. Réponses: 15
    Dernier message: 27/01/2009, 15h34
  3. Réponses: 4
    Dernier message: 13/11/2007, 12h31
  4. Réponses: 5
    Dernier message: 15/03/2007, 10h08
  5. Réponses: 2
    Dernier message: 26/12/2006, 22h40

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