2016-04-13 2 views
2

GridViewのソート時にSortedDescendingHeaderStyle-CssClassSortedAscendingHeaderStyle-CssClassがヘッダーに適用される理由を理解できませんか?C#Gridviewソート時にヘッダースタイルが適用されない

ここは私のマークアップです。コードの背後にそれを設定する必要がありますか?

.ascending a 
    { 
     background: url(/images/asc.gif) right no-repeat; 
     display: block; 
     padding: 0 25px 0 5px; 
    } 

    .descending a 
    { 
     background: url(/images/desc.gif) right no-repeat; 
     display: block; 
     padding: 0 25px 0 5px; 
    } 

<asp:GridView ID="gvOrderItems" runat="server" GridLines="None" CellSpacing="-1" AutoGenerateColumns="false" SortedAscendingHeaderStyle-CssClass="ascending" 
    AllowSorting="true" OnRowDataBound="gvOrderItems_RowDataBound" SortedDescendingHeaderStyle-CssClass="descending" OnSorting="gvOrderItems_Sorting" EnableViewState="true" AllowPaging="true" PageSize="10" OnPageIndexChanging="gvOrderItems_PageIndexChanging1">      
    <Columns>        
    <asp:BoundField DataField="OrderDate" HeaderText="Date" HeaderStyle-Font-Underline="true" HeaderStyle-ForeColor="White" ControlStyle-Font-Underline="true" DataFormatString="{0:dd/MM/yyyy}" SortExpression="OrderDate" /> 
    <asp:BoundField DataField="OrderNumber" HeaderText="Order Number" HeaderStyle-Font-Underline="true" HeaderStyle-ForeColor="White" SortExpression="OrderNumber" /> 
    <asp:BoundField DataField="SKUNumber" HeaderText="Product Number" HeaderStyle-Font-Underline="true" HeaderStyle-ForeColor="White" SortExpression="SKUNumber" /> 
    <asp:BoundField DataField="OrderItemSKUName" HeaderText="Product Description" /> 
    <asp:BoundField DataField="mtrx_Code2" HeaderText="Size" /> 
    <asp:BoundField DataField="OrderItemUnitCount" HeaderText="OTY" /> 
    <asp:BoundField DataField="OrderItemStatus" HeaderText="Status" />   
    </Columns> 
    <PagerStyle HorizontalAlign="Right" CssClass="cssPager"/>  

</asp:GridView> 
+0

クラスを適用しているかどうかチェックしましたか? –

+0

GridViewは自動的に動作するために、マークアップ内のデータソースにバインドする必要があります。 – ConnorsFan

+0

こんにちはPiyushクラスは、データをソートすると決して適用されません?とにかくソートイベント中にコードを使って追加することはできますか? – Kevin

答えて

0

私はConnorsFanのおかげでこれを解決できました。基本的に列をループし、要求された並べ替え式を照合して列のインデックスを取得します。ここに私の解決策があります

foreach (DataControlField col in gvOrderItems.Columns) 
{ 
    if (col.SortExpression == sortExpression) 
    { 
     int index = gvOrderItems.Columns.IndexOf(col); 
     gvOrderItems.Columns[index].HeaderStyle.CssClass = "descending"; 
    } 
}