J'ai un gridview et j'ai besoin de trier les éléments lorsque l'utilisateur clique sur l'en-tête.
Sa source de données est un objet de la Liste.
Le aspx est définie de cette manière :
<asp:GridView ID="grdHeader" AllowSorting="true" AllowPaging="false"
AutoGenerateColumns="false" Width="780" runat="server" OnSorting="grdHeader_OnSorting" EnableViewState="true">
<Columns>
<asp:BoundField DataField="Entitycode" HeaderText="Entity" SortExpression="Entitycode" />
<asp:BoundField DataField="Statusname" HeaderText="Status" SortExpression="Statusname" />
<asp:BoundField DataField="Username" HeaderText="User" SortExpression="Username" />
</Columns>
</asp:GridView>
Le code derrière est définie de cette manière :
La première charge :
protected void btnSearch_Click(object sender, EventArgs e)
{
List<V_ReportPeriodStatusEntity> items = GetPeriodStatusesForScreenSelection();
this.grdHeader.DataSource = items;
this.grdHeader.DataBind();
}
lorsque l'utilisateur clique sur l'un des en-têtes :
protected void grdHeader_OnSorting(object sender, GridViewSortEventArgs e)
{
List<V_ReportPeriodStatusEntity> items = GetPeriodStatusesForScreenSelection();
items.Sort(new Helpers.GenericComparer<V_ReportPeriodStatusEntity>(e.SortExpression, e.SortDirection));
grdHeader.DataSource = items;
grdHeader.DataBind();
}
Mon problème est que l'e.SortDirection est toujours Croissant.
J'ai une page web avec un code similaire et il fonctionne bien, l'e.SortDirection alterne entre Ascendant et Descendant.
Qu'ai-je fait de mal ?