Changer la source de donnée d'un gridview
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:
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:
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