Construction de selectcommand

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 413 fois - Téléchargée 28 fois

Contenu du snippet

Comment construire une selectcommand avec un where en fonction des textbox remplis...

Source / Exemple :


j'ai mis des textbox, un  bouton, un sqldatasource et une gridview sur ma page :

ensuite j'ai construit ma requête juste avec un select que j'ai effacer (le select) juste après ça donne :

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings: ConnectionString3%>">

<SelectParameters>

<asp:Parameter DefaultValue="%" Name="nom" Type="String" />

<asp:Parameter DefaultValue="%" Name="prenom" Type="String" />

.....

</SelectParameters> 

</asp:SqlDataSource>

ensuite en vb j'ai fais :

Protected Sub Oim()

Dim Sc As String = ""

Dim io As Integer = 0

Sc = "SELECT [nom], [prenom], [surnom], [dn], [ln], [dept], [pays] FROM [clients]"

If Not TbNom.Text = String.Empty Then

Sc = Sc & " WHERE (([nom] LIKE @nom + '%'))"

Me.SqlDataSource1.SelectParameters("nom").DefaultValue = TbNom.Text

io = 1

End If

If Not TbPrenom.Text = String.Empty Then

If io = 0 Then

Sc = Sc & " WHERE (([prenom] LIKE @prenom + '%'))"

io = 1

Else

Sc = Replace(Sc, "))", ") AND ([prenom] LIKE @prenom + '%'))")

End If

Me.SqlDataSource1.SelectParameters("prenom").DefaultValue = TbPrenom.Text

End If

Me.SqlDataSource1.SelectCommand = Sc

End Sub

ensuite le code de mon bouton pour faire disparaître la gridview et le precedent resultat si on fais une recherche avec rien dans les champs ... :

Protected Sub BtnRechercher_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnRechercher.Click

If TbNom.Text = String.Empty And TbPrenom.Text = String.Empty Then

Selectparamdefault() 'remet tout les Me.SqlDataSource1.SelectParameters("nom").DefaultValue = "" ... pareil pour les autres

Else

Oim()

End If

End Sub

voila voila si vous pouvez me dire ce que vous en pensez ou si cela peu aider quelqu'un...

A voir également

Ajouter un commentaire

Commentaires

Barnside
Messages postés
4
Date d'inscription
vendredi 6 juillet 2012
Statut
Membre
Dernière intervention
16 septembre 2012

Salut io_ost,

Un grand grand merci à toi !!!!

Je galérais depuis des jours sur un sortexpression et j'ai finalement opté pour ta solution que j'ai adaptée pour faire mes prix. Je me passe donc de tout le bazar des onsorting de mon gridview GV1 rempli à base de TeMplatefields avec UNE accessdatasource RESULTSwADS définie en behind VB. Voilà pour le bavardage :-)

Au cas où cela pourrait aider quelqu'un débutant comme moi, voici mon code :

BEHIND

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

' j'arrive sur la page avec un querystring depuis une autre page que je récupère dans un textbox. Optionnel, mais bon.
SECTEURSwL.Text = Request.QueryString("SECTEURS")

' je définis ma ds
RESULTSwADS.DataFile = "~/bdd.accdb"

' je balance une selectcommand partielle... La suite vient après
Dim hop As String = "SELECT * FROM [ReqPROGRAMMES] WHERE [SECTEURS]=? AND [Prix]>=? AND [Prix]<=? AND [SURFACE]>=? AND [SURFACE]<=?"
RESULTSwADS.SelectParameters.Add("SECTEURS", SECTEURSwL.Text)
RESULTSwADS.SelectParameters.Add("Prix", PRIXMINwDDL.SelectedValue)
RESULTSwADS.SelectParameters.Add("Prix", PRIXMAXwDDL.SelectedValue)
RESULTSwADS.SelectParameters.Add("SURFACE", SURFACEMINwDDL.SelectedValue)
RESULTSwADS.SelectParameters.Add("SURFACE", SURFACEMAXwDDL.SelectedValue)
RESULTSwADS.SelectParameters.Add("Region", REGIONwDDL.SelectedValue)
RESULTSwADS.SelectParameters.Add("Departement", DEPARTEMENTwDDL.SelectedValue)

' et là, hop, les filtres à base de dropdownlist (avec autopostback=true)
' un 1er
If REGIONwDDL.SelectedValue <> "-" Then
hop = hop & " AND [Region]=?"
End If

' puis un 2ème
If DEPARTEMENTwDDL.SelectedValue <> "-" Then
hop = hop & "AND [Departement]=?"
End If

' puis 2 DDL de tri + 2 DDL de sortdirection (croissant décroissant) pour la partie "ORDER BY" de la Selectcommand
hop = hop & "ORDER BY [" & SORTDDL.SelectedValue & "]" & CROISSANTwDDL.SelectedValue & ", [" & SORTDDL2.SelectedValue & "]" & CROISSANTwDDL2.SelectedValue & ""

' là, j'associe la selectcommand à la datasource
RESULTSwADS.SelectCommand = hop

' j'en profite pour définir quelques paramètres du Gridview GV1.
GV1.AllowSorting = True
Page.Controls.Add(RESULTSwADS)
GV1.PageSize = 10
GV1.PagerSettings.Visible = False
GV1.DataSource = RESULTSwADS
GV1.AutoGenerateColumns = False
GV1.GridLines = GridLines.None
GV1.PageSize = PAGEwDDL.SelectedValue

GV1.AllowPaging = True
GV1.AllowSorting = True
GV1.PagerSettings.Visible = True

GV1.PagerStyle.HorizontalAlign = HorizontalAlign.Right
GV1.PagerSettings.Mode = PagerButtons.NumericFirstLast
GV1.PagerSettings.Position = PagerPosition.TopAndBottom
GV1.PagerStyle.CssClass = "BLEU11"
GV1.ShowHeader = False
GV1.EmptyDataText = "Saisissez vos critères à l'aide du moteur de recherche"
GV1.EmptyDataRowStyle.CssClass = "GRISSOMBRE10"
GV1.CellPadding = 5
GV1.CellSpacing = 10
GV1.BorderColor = Drawing.Color.Transparent
GV1.BorderWidth = 0
GV1.PageIndex = 0
GV1.DataBind()
End Sub

Et bing ! ça cartonne !!!!!!!!

Bon courage à tous et merci
saphir54321
Messages postés
28
Date d'inscription
mardi 3 octobre 2006
Statut
Membre
Dernière intervention
14 novembre 2007

Merci ton code m'a aidé pour un problème que j'avais et dont je ne trouvais pas de solution.
khalil86
Messages postés
2
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
25 mars 2006

merci pour le code ca ma bien aidé

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (io_ost)