Bonjour,
J'aimerais savoir comment faire pour changer la source d'un gridview lié a un sqldatasource et garder la capacité de faire des tris et sélections.
Mon gridview se charge une première fois, ici je peut faire des tries sur les colonnes (grace a AllowSorting="True" ) ou en sélectionner une.
On peut après faire une recherche sur les éléments du gridview ( comme avoir qu'un certain numéreau, ... par exemple)
après avoir remplie les champs de recherche je modifie la commend sql du sqlDataSource (pour rajouter les restriction de recherche) puis je fait un databind.
Les éléments s'affiche bien mais si je fait un tri sur une colonnes ou que je veut en sélectionne une ça me remet l'ancien gridview ( et ça selectionne l'ancienne ligne)
Donc je ne sais pas comment faire , ou si vous avais une autre façon de faire pour restreindre les ligne dans le gridview je suis preneur
Voici le code behind :
Code vb : 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Session("profil") <> "demandeur" Then Response.Redirect("~/default.aspx") Else Dim sql as String = "select d.id iddem,u.nom gestionnaire, r.etat, to_char(r.datereal,'dd/mm/yyyy') datereal, d.sommaire " & _ "from demande d, realiser r, utilisateur u " & _ "where(d.id = r.id_demande And u.id = d.id_utilisateur) " & _ "and lower(r.etat) not like 'cloturer' " & _ "and r.datereal = (select max(datereal) from realiser where id_demande = d.id) " & _ "and d.id in (select id_demande from realiser where id_utilisateur = " + Session("id") + ") " listdem.SelectCommand = Session("sql") gv_dem.DataBind() End If End Sub Protected Sub bt_recherche_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_recherche.Click 'Construction de la requete de recherche Dim sql as String = "select d.id iddem,u.nom gestionnaire, r.etat, to_char(r.datereal,'dd/mm/yyyy') datereal, d.sommaire " & _ "from demande d, realiser r, utilisateur u " & _ "where(d.id = r.id_demande And u.id = d.id_utilisateur) " & _ "and lower(r.etat) not like 'cloturer' " & _ "and r.datereal = (select max(datereal) from realiser where id_demande = d.id) " & _ "and d.id in (select id_demande from realiser where id_utilisateur = " + Session("id") + ") " If tb_nom.Text <> "" Then sql += "And LOWER(d.nom) like '%" + LCase(tb_nom.Text.ToString) + "%' " End If If tb_num.Text <> "" Then sql += "And d.id = " + tb_num.Text.ToString + " " End If If dd_dom.SelectedValue <> "0" Then sql += "And d.id_domaine in (select id from domaine where id_surdomaine = " + dd_dom.SelectedValue.ToString + ") " End If If dd_quartier.SelectedValue <> "0" Then sql += "And d.ID_QUARTIER = " + dd_quartier.SelectedValue.ToString + " " End If If tb_date.Text <> "" Then sql += "And d.id in (select id_demande from realiser group by id_demande having to_char(MIN(datereal),'dd/mm/yyyy') like '" + tb_date.Text.ToString.ToString + "') " End If If dd_etat.SelectedValue <> "0" Then sql += "And d.id in (select id_demande from realiser where etat like '" + dd_etat.SelectedItem.ToString + "') " End If listdem.SelectCommand = Session("sql") gv_dem.DataBind() End Sub
Voila le code du gridview
Code asp : 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 <asp:GridView ID="gv_dem" runat="server" AutoGenerateColumns="False" DataSourceID="listdem" CellPadding=5 AllowPaging="True" AllowSorting="True" enableviewstate="False" DataKeyNames="iddem" > <Columns> <asp:BoundField DataField="iddem" HeaderText="Numéreau" ReadOnly="True" SortExpression="iddem" /> <asp:BoundField DataField="ETAT" HeaderText="Etat" SortExpression="ETAT" /> <asp:BoundField DataField="gestionnaire" HeaderText="Gestionnaire" SortExpression="gestionnaire" /> <asp:BoundField DataField="SOMMAIRE" HeaderText="Nature de la demande" SortExpression="SOMMAIRE" /> <asp:BoundField DataField="DATEREAL" HeaderText="Date" SortExpression="DATEREAL" /> <asp:CommandField ButtonType=Image ShowSelectButton="True" HeaderText="Detail" SelectImageUrl="~/images/edit.png" /> </Columns> <EmptyDataTemplate> Aucune demande n'a été selectionné </EmptyDataTemplate> <HeaderStyle CssClass="haut_tab" /> <PagerStyle CssClass="bas_tab" /> <RowStyle CssClass="ligne1"/> <AlternatingRowStyle CssClass="ligne2" /> <PagerSettings Mode=Numeric /> </asp:GridView> <asp:SqlDataSource ID="listdem" runat="server" ConnectionString="<%$ ConnectionStrings:ETRAV2connection %>" ProviderName="<%$ ConnectionStrings:ETRAV2connection.ProviderName %>"> </asp:SqlDataSource>
Merci pour votre aide
Partager