【问题标题】:C# Gridview Header style not applied on sortingC# Gridview 标题样式不适用于排序
【发布时间】:2016-08-04 11:21:09
【问题描述】:

我不明白为什么SortedDescendingHeaderStyle-CssClassSortedAscendingHeaderStyle-CssClass 在对我的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>

【问题讨论】:

  • 您是否尝试对数据进行排序并检查是否应用了类?
  • 您的 GridView 可能必须绑定到标记中的数据源才能自动工作。
  • 嗨,当我对数据进行排序时,Piyush 类永远不会被应用?无论如何我可以在排序事件期间通过代码添加它吗?
  • 你试过gvOrderItems.Columns[n].HeaderStyle.CssClass(其中n是排序列的索引)吗?
  • Sorting 事件中,您可以遍历列并获取与SortExpressione.SortExpression 相同的列。

标签: c# html css asp.net gridview


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多