Le tri sur un gridview ne se fait plus dés que celui-ci est dans un updatePanel
Bonjour
tout est dans le titre : j'ai un un gridview sur lequel je peux faire des tris sur (presque) chaque colonne. Cela fonctionne très bien et mes tris sont conformes à mes attentes.
Mais pour améliorer l'"experience utilisateur " (:mouarf:), je désire le faire par AJAX. je mets donc simplement mon gridview dans un updatePanel, et là, plus rien ne marche. Les requêtes ajax sont bien envoyées, mais la réponse du serveur est vide.
omet-je quelque chose ?
Mon tri :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| protected void tri(string critere, string sens)
{
if (ViewState["dv"] != null)
{
try
{
DataTable table = (DataTable)ViewState["dv"];
DataView dv = new DataView(table);
dv.Sort = critere + " " + sens;
GridView1.DataSource = dv;
GridView1.DataBind();
UpdatePanel1.Update();
}
catch (Exception e)
{
Response.Write("Erreur sur tri : " + e.Message);
}
}
} |
appelé comme suit :
Code:
1 2 3 4
| protected void tarif_tri_desc_Click(object sender, ImageClickEventArgs e)
{
tri("tarif", "desc");
} |
La page :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" >
<ContentTemplate>
Tarifs disponibles :
<br />
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
BorderStyle="None" CssClass="comparateur">
<Columns>
(...)
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel> |
Je précise : les images sur lesquelles on clique pour avoir le tri (tarif_tri_desc_Click) sont dans les entetes du gridview.
Un debuggage pas à pas me montre que les méthodes sont convenablement appelées, c'est simplement la réponse qui n'est pas envoyées au navigateur.
PS : Tout ce beau monde se trouve dans un userControl