cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010
-
21 juil. 2008 à 14:54
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010
-
24 juil. 2008 à 08:50
Bonjour,
Je dois actuellement recréer une application en asp.net(vb) qui était auparavant basé sur access. Je suis débutant dans ce langage et j'aimerai avoir votre avis sur les outils à utiliser.
L'application repose en grande partie sur l'affichage de tables avec la possibilité de filtrer les données selon des champs.
Ainsi en saisissant un fournisseur, en modifiant les dates on obtient donc une série de filtres qui affiche que selon ce qu'on désire.
A noter que la petite loupe renvoi vers un état imprimable de la commande.
Est-il possible de faire ceci en asp.net ? Je pensais utiliser un gridview, mais je ne sais pas comment gérer les filtres ? Comment faire pour créer des etats imprimables ?
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 22 juil. 2008 à 15:11
As tu testée ta requête pour savoir si elle fonctionne ?
Pour avoir un mélange entre les deux options il te suffit de magouiller : tu fait une fois l'un une fois l'autre et tu mélange le tout.
Sinon si ta requete fonctionne en dehors du SqlDataSource modifie juste les type : string pour fournisseur et libelle et datetime pour date_deb et date_fin (enfin ça c'est selon la construction de ta table).
Mais je rest d'avis que le mieux est de creer une procédure stockee
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 21 juil. 2008 à 16:29
Salut,
Ta question est très vaste !
Le Gridview est une bonne idée pour afficher tes données. Pour gérer les filtres il te suffit d'utiliser plusieurs champs permettant à l'utilisateur de faire ses choix, et lors d'un clic sur un bouton de validation il faut vérifier que les champs sont bien remplis et choisir ainsi une requete selon eux.
Si ce n'est pas très clair (ça serait compréhensible) demande des détails suplémentaires.
Bon courage
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres pers
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 22 juil. 2008 à 08:29
Merci d'avoir répondu à ma question.
Je veux bien plus de précisions sur ta solution. Un exemple si tu as ?
De plus sais tu comment je peux faire pour que l'utilisateur en cliquant sur la loupe est un état imprimable ? Je pensais a crystal report, mais jamais utilisé..
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 22 juil. 2008 à 09:37
<hr />
Salut,
Je t'ai fait un exemple simple avec des champs pour ton filtre, un gridview et des sources de données (j'ais pris une source SqlServer mais à toi de modifier). Cet exemple ne propose que deux choix : une recherche filtrée et une sans filtre, mais après tu peux decider de faire les verifs nécessaire pour n'utiliser qu'une partie du filtre si le reste n'est pas rempli, le mieux pour ça serait de garder les sources comme elles sont mais de faire une procédure stockée (à voir dans un prochain épisode).
<hr />
Pour les champs du filtre des TextBox et un bouton de validation :
<
</asp:GridView>
Deux requete Sql, une pour le filtre et une simple, sans filtre (celle avec le filtre, comme tu peux le voir, est reliée à tes TextBox) :
SelectCommand="SELECT * FROM [TABLE_COMMANDE] WHERE (([FOURNISSEUR] = @FOURNISSEUR) AND ([DATE] >= @DATE_DEB) AND ([DATE] <= @DATE_FIN) AND ([LIBELLE] = @LIBELLE))">
ConnectionString="<%$ Ta chaine de connexion %>
"
SelectCommand="SELECT * FROM [TABLE_COMMANDE]">
</asp:SqlDataSource>
Le code-behind effectué lors du clic sur le bouton (c'est du C#) et une fonction qui permet de vérifier si les champs sont remplis :
protected
<hr />
Voilà j'espère que ce début de code pourra t'être utile, tient moi au courant et n'oublie pas de cliquer sur réponse acceptée si la réponse te va.
@Pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
Vous n’avez pas trouvé la réponse que vous recherchez ?
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 22 juil. 2008 à 09:39
Argh c'est moche quand on affiche !!! J'espère que t'arrive à relire !
Juste j'oubliais pour ton état imprimable je serais toi au clic j'ouvrirais une popup qui affiche le résultat et avec le CSS je modèlerai cette popup pour qu'elle soit imprimable
Tchô
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 22 juil. 2008 à 10:45
Merci pour tout ce code ^^
J'ai un petit souci, je code en VB et pas C# et je ne vois pas mon Gridview1 dans le code vb :
Protected Sub ButtonFiltre_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonFiltre.Click
If (VerifRempli) Then
GridView1 /// Je ne le vois pas avec l'intellisense
End If
End Sub
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 22 juil. 2008 à 11:12
Salut,
Là je sait pas trop comment t'aider, le problème ne vient sûrement pas du langage (et puis j'y connait rien en VB). Le retrouve tu si tu tape dans le PageLoad (je viens de voir qu'il n'y en a pas en VB mais on peut peut etre en creer un) ? Est tu sur d'avoir donner le même ID à ton GridView ?
Sinon tu peux toujours faire des recherches sur FindControl qui te permet, avec son ID, de retrouver ton control.
Je viens juste de faire le test en VB mais moi l'Intellisense le retrouve donc ça doit être une erreur toute bête !! Fouille un peu tu vas trouver, et si vraiment tu voit pas envoie moi ton code complet.
@Pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 22 juil. 2008 à 11:18
Trouvé ^^ J'ai pas trop compris pourquoi mais c'est pas grave :)
Comment fais tu pour renseigner du code dans ton post en gardant les couleurs et tout ? Comme çà je pourrais te faire voir ce que j'ai fait, j'ai encore un souci :)
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 22 juil. 2008 à 11:27
Je fait un copier-coller de Visual Studio au forum. Le problème c'est que si tu écrit après tu ne retrouve pas ta police normal alors j'ecrit ton mon texte et à la fin seulement j'incorpore le code aux endroits voulus.
C'est quoi ton souci ?
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 22 juil. 2008 à 11:43
<hr />
<%
@
Page
Language
= "VB"
MasterPageFile
="~/MasterPage.master"
AutoEventWireup
="false"
CodeFile
="Default3.aspx.vb"
Inherits
="Default3"
title
="Page sans titre"
%>
<
asp
:
Content
ID
="Content1"
ContentPlaceHolderID
="Main"
Runat
="Server"><
asp
:
Label
ID
="Label1"
runat
="server"
Text
="Fournisseur"></
asp
:
Label
><
asp
:
TextBox
ID
="TextBoxFournisseur"
runat
="server"></
asp
:
TextBox
><
asp
:
Label
ID
="Label2"
runat
="server"
Text
="Date entre"></
asp
:
Label
><
asp
:
TextBox
ID
="TextBoxDateDeb"
runat
="server"></
asp
:
TextBox
><
asp
:
Label
ID
="Label3"
runat
="server"
Text
="et"></
asp
:
Label
><
asp
:
TextBox
ID
="TextBoxDateFin"
runat
="server"></
asp
:
TextBox
><
asp
:
Label
ID
="Label4"
runat
="server"
Text
="Libelle"></
asp
:
Label
><
asp
:
TextBox
ID
="TextBoxLibelle"
runat
="server"></
asp
:
TextBox
><
asp
:
Button
ID
="ButtonFiltre"
runat
="server"
Text
="Filtrer"
onclick
="ButtonFiltre_Click"/>
<
asp
:
GridView
ID
="GridView1"
runat
="server"
Visible
="false"></
asp
:
GridView
><
asp
:
SqlDataSource
ID
="SqlDataSourceFiltre"
runat
="server"
ConnectionString
="
<%$ ConnectionStrings:ConnectionString %>
"
SelectCommand
"SELECT Fournisseur.IdFournisseur, Fournisseur.Nom, ComEnt.Datecde, ComEnt.[NøCom], ComLign.[Nøligne], Chantier.Nom_chantier, ComLign.CodRef, ComLign.LibRef, ComLign.Unit, ComLign.Qt‚, ComLign.PrixUnit FROM (((ComEnt INNER JOIN Fournisseur ON ComEnt.[NøFourn] Fournisseur.[NøFourn]) INNER JOIN Chantier ON ComEnt.[NøChant] = Chantier.Code_analytique_chantier) INNER JOIN ComLign ON ComEnt.[NøCom] = ComLign.[NøCom]) WHERE ((Fournisseur.[Nom] = @FOURNISSEUR) AND (ComEnt.[DateCde] >= @DATE_DEB) AND (ComEnt.[DateCde] <= @DATE_FIN) AND (ComLign.[LibRef] = @LIBELLE))"><
SelectParameters
><
asp
:
ControlParameter
ControlID
="TextBoxFournisseur"
Name
="FOURNISSEUR"
PropertyName
="Text"
Type
="String"/><
asp
:
ControlParameter
ControlID
="TextBoxDateDeb"
Name
="DATE_DEB"
PropertyName
="Text"
Type
="Int32"/><
asp
:
ControlParameter
ControlID
="TextBoxDateFin"
Name
="DATE_FIN"
PropertyName
="Text"
Type
="String"/><
asp
:
ControlParameter
ControlID
="TextBoxLibelle"
Name
="LIBELLE"
PropertyName
="Text"
Type
="Decimal"/></
SelectParameters
></
asp
:
SqlDataSource
>
<
asp
:
SqlDataSource
ID
="SqlDataSourceNoFiltre"
runat
="server"
ConnectionString
="
<%$ ConnectionStrings:ConnectionString %>
"
SelectCommand
"SELECT Fournisseur.IdFournisseur, Fournisseur.Nom, ComEnt.Datecde, ComEnt.[NøCom], ComLign.[Nøligne], Chantier.Nom_chantier, ComLign.CodRef, ComLign.LibRef, ComLign.Unit, ComLign.Qt‚, ComLign.PrixUnit FROM (((ComEnt INNER JOIN Fournisseur ON ComEnt.[NøFourn] Fournisseur.[NøFourn]) INNER JOIN Chantier ON ComEnt.[NøChant] = Chantier.Code_analytique_chantier) INNER JOIN ComLign ON ComEnt.[NøCom] = ComLign.[NøCom]) WHERE (LEFT (ComLign.LibRef, 1) <> '.') ORDER BY Fournisseur.Nom, ComEnt.Datecde DESC, ComEnt.[NøCom] DESC, ComLign.[Nøligne]"></
asp
:
SqlDataSource
>
</
asp
:
Content
>
<hr />
Partial
Class
Default3
Inherits
System.Web.UI.Page
Protected
Sub
ButtonFiltre_Click(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
ButtonFiltre.Click
If
(VerifRempli())
Then
GridView1.DataSourceID =
"SqlDataSourceFiltre"
GridView1.DataBind()
GridView1.Visible =
True
Else
GridView1.DataSourceID =
"SqlDataSourceNoFiltre"
GridView1.DataBind()
GridView1.Visible =
True
End
If
End
Sub
Function
VerifRempli()
As
Boolean
If
(TextBoxFournisseur.Text =
""
OrElse
TextBoxDateDeb.Text =
""
OrElse
TextBoxDateFin.Text =
""
OrElse
TextBoxLibelle.Text =
""
)
Then
Return
False
Else
Return
True
End
If
End
FunctionEnd
Class
<hr />
La requête sans filtre fonctionne dans le testeur de requête.
Mon problème est qu'au lancement du site, le gridview ne s'affiche pas. Par défaut j'aimerai qu'il affiche les données sans filtre.
Le deuxième problème est que dès que j'appuie sur le bouton filtrer en ayant saisi des informations ou non il bloque sur GridView1.DataBind() (mis en gras) et me dis : Mot clé non pris en charge : 'provider'.
Là ou il bloque c'est que ta requete ne doit pas marcher !!
Pour que ta requête fonctionne il faut absolument que tout tes champs soient remplis, et que tu modifie les Type des ControlParameter, ceux que j'avais mis sont des exemples !!!
Du genre pour les dates :
<
un libelle n'est pas un decimal non plus, etc... L'Intellisense pourra t'aider pour ça.
Où même crée tes SqlDataSource avec la ToolBox de VisualStudio et modifie en mode Design, ça t'apprendra aussi comment ça fonctionne et évitera des erreurs. Si tu l'avais fait avec la ToolBox les ControlParameter se seraient construits dynamiquement selon tes champs et ça t'aurais éviter cette erreur.
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres pers
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 22 juil. 2008 à 14:40
Merci de me consacrer de ton temps.
J'ai bien compris pour l'affichage par défaut, sa marche nickel.
Mon problème est autour de la requête du DataSourceFiltre. J'ai essayé de la simplifiée pour voir, mais cela ne marche toujours pas.
Est-il possible en mode design de créer des jointure et de rajouter des paramètres en même temps dans une seul et unique requête.
En effet quand clique sur Configurer l'instruction Select, j'ai le choix entre les options "Spécifiez une instruction SQL personnalisée ou une procédure stockée" et "spécifiez les colonnes d'une table ou d'une vue " Si je choisis la première je peut creer des jointures comme je veux mais je ne peut pas créer des requête paramétrée. Dans l'autre c'est l'inverse. Que Faire ?
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 22 juil. 2008 à 16:59
Bien sur,
Tu crée une nouvelle requête, tu passe en mode SQL (Affichage => Mode SQL) et tu utilise la syntaxe des procédures stockees. J'ai pas réussie à te trouver un tuto extra facile mais cherche un peu sur google tu finira par trouver. Au pire va sur le forum de www.sqlfr.com
@pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres pers
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 23 juil. 2008 à 00:48
Bonsoir,
Sur la question de départ, il y a un tutorial 'classique' (en vidéo, mais en anglais). Pour débuter, je trouve ça pas trop mal. Ca n'aborde pas vraiment la question des événéments et du code, mais explique la gestion de base d'un contrôle gridview avec une dropdownlist, avec mise à jour de la base, et permet de comprendre globalement comment ça marche :
http://download.microsoft.com/download/8/3/6/836dd5f8-fa92-499f-8219-0d326f13bf18/hilo_data_final.wmv Attention, toutefois, c'est fondé sur la bdd d'exemple de MS. En partant d'une base access, il y a des petits détails à changer (mais rien qui défie l'entendement).
Cela dit, je n'ai pas trop suivi la discussion : mais si tu peux passer aussi à sql server, plutôt que de changer seulement d'interface, c'est beaucoup mieux... le gain en traitement, surtout sur des bases un peu lourdes, est incomparable.
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 23 juil. 2008 à 08:18
Bonjour
J'ai un petit souci quand je veux créer une requête paramétrée avec l'assistant. En effet je vois 2 fois mes controles dans la liste des controles et quand j'en sélectionne un, il ne se met pas à jour en bas et laisse un "?".
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 23 juil. 2008 à 08:47
Salut,
le fait que tu le voit 2 fois n'est absolument pas grave, c'est même normal (te dire pourquoi après ça ...). Il faut que tu en selectionne un puis que tu appuie sur le bouton "Ajouter" pour valider ton choix.
@Pluche
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 23 juil. 2008 à 10:20
Autre question ?
J'ai réussi a faire 2 filtre sur un gridview, le problème c'est que je suis obligé de remplir les 2 si je veux filtrer. Est-ce possible de filtrer avec qu'un seul champ. Sachant que dans la requête il attends les 2 arguments ?