C#网格视图标题样式在排序时未应用

3

我不明白为什么在对我的 GridView 进行排序时,应用了 SortedDescendingHeaderStyle-CssClassSortedAscendingHeaderStyle-CssClass 样式类到标题上?

这是我的标记代码。我需要在后台配置吗?

.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>

你尝试过对数据进行排序并检查是否应用了类吗? - INDIA IT TECH
你的 GridView 可能需要在标记中绑定到数据源才能自动工作。 - ConnorsFan
嗨Piyush,当我对数据进行排序时,类永远不会被应用?是否有任何方式可以在排序事件期间通过代码添加它? - KJSR
1
你尝试过使用 gvOrderItems.Columns[n].HeaderStyle.CssClass(其中n是排序列的索引)吗? - ConnorsFan
1
在“排序”事件中,您可以循环遍历列并获取与e.SortExpression相同的SortExpression - ConnorsFan
显示剩余2条评论
1个回答

1

感谢ConnorsFan,我得以解决这个问题。基本上是通过循环遍历列并匹配请求的排序表达式来获取列的索引。以下是我的解决方案。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接