2010-04-12 7 views
1

J'ai un GridView qui obtient sa source de données à partir d'un objet complexe. Donc, je fais le tri & de pagination dans le code derrière.Gridview SortExpression avec 2 champs

<asp:GridView ID="SystemsDetailList" runat="server" AllowSorting="true" AllowPaging="true" 
AutoGenerateColumns="False" ShowFooter="True" OnPageIndexChanging="gridView_PageIndexChanging" OnSorting="gridView_Sorting"> 

Pour une importante colonne de titre que j'ai un SortExpression avec 2 champs:

SortExpression="FunctionalAreaDisplayCode, EswbsDisplayCode" 

Ce dans le code derrière:

protected void gridView_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    BindSystemList(e.SortExpression, sortOrder); 
} 

public string sortOrder 
{ 
    get 
    { 
     if (ViewState["sortOrder"].ToString() == "desc") 
      ViewState["sortOrder"] = "asc"; 

     else 
      ViewState["sortOrder"] = "desc"; 

     return ViewState["sortOrder"].ToString(); 
    } 
    set 
    { 
     ViewState["sortOrder"] = value; 
    } 
} 

Pour une raison quelconque, il gardera "FunctionalAreaDisplayCode" toujours trié ASC mais le EswbsDisplayCode fonctionne bien car il bascule entre ASC et DESC correctement.

et des conseils ici?

merci!

+0

Je ne comprends pas votre question. Voulez-vous dire qu'il devrait basculer entre (FunctionalAreaDisplayCode asc, EswbsDisplayCode asc) et (FunctionalAreaDisplayCode desc, EswbsDisplayCode desc) – Homer

Répondre

0

Je suppose qu'il crée une clause SQL ORDER BY en ajoutant simplement l'ordre de tri à l'expression de tri. Donc, vous aurez:

FunctionalAreaDisplayCode, EswbsDisplayCode asc 

et

FunctionalAreaDisplayCode, EswbsDisplayCode desc 

qui sont interprétées par SQL (ou quoi que fait le tri) comme:

FunctionalAreaDisplayCode asc, EswbsDisplayCode asc 

et

FunctionalAreaDisplayCode asc, EswbsDisplayCode desc 

Voir this ORDER BY tutorial:

Il est important de se rappeler que chaque fois que vous commandez par plus d'une colonne, vous besoin de spécifier ASC et/ou DESC après chaque colonne

Hugh