ASP.NET GridView SortedAscendingHeaderStyle不起作用

前端之家收集整理的这篇文章主要介绍了ASP.NET GridView SortedAscendingHeaderStyle不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的SortedAscendingHeaderStyle和SortedDescendingHeaderStyle根本不起作用
  1. <asp:GridView ID="grdProducts" runat="server" CssClass="grid" AllowPaging="True" AllowSorting="True" PageSize="100" EmptyDataText="No data to show"
  2. onrowdatabound="grdProducts_RowDataBound" onrowediting="grdProducts_RowEditing" onsorting="grdProducts_Sorting" AutoGenerateEditButton="True">
  3. <AlternatingRowStyle CssClass="even" />
  4. <SortedAscendingHeaderStyle ForeColor="White" CssClass="sorted" />
  5. <SortedDescendingHeaderStyle CssClass="sorted desc" />
  6. </asp:GridView>

单击标题时行正确排序,但是当我使用FireBug检查标题时,它只显示:(这是按升序排序时)

  1. <th scope="col">
  2. <a href="javascript:__doPostBack('ctl00$body$ctl00$grdProducts','Sort$Namekey')">Namekey</a>
  3. </th>

ForeColor和CssClass根本没有设置.

任何人都知道我做错了什么?

编辑:我的C#代码背后

  1. protected void grdProducts_Sorting(object sender,GridViewSortEventArgs e)
  2. {
  3. if ((string)ViewState["SortColumn"] == e.SortExpression)
  4. ViewState["SortDirection"] = ((string)ViewState["SortDirection"] == "") ? " DESC" : "";
  5. else
  6. {
  7. ViewState["SortColumn"] = e.SortExpression;
  8. ViewState["SortDirection"] = "";
  9. }
  10. }
  11.  
  12. protected override void OnPreRender(EventArgs e)
  13. {
  14. BindGrid();
  15. base.OnPreRender(e);
  16. }
  17.  
  18. private void BindGrid()
  19. {
  20. string query = "SELECT ... ORDER BY " + ViewState["SortColumn"] + ViewState["SortDirection"];
  21.  
  22. DataTable dt = sqlFunctions.Select(query);
  23. grdProducts.DataSource = dt;
  24. grdProducts.DataBind();
  25. }

解决方法

如果您没有使用asp:sqlDataSource作为GridView数据源,我不确定SortedDescendingHeaderStyle是否在没有代码的情况下工作.但是一点编码可以帮助你.

您需要手动将CSS样式应用于标题单元格.您可以在Sorting事件中执行此操作.

  1. protected void grdProducts_Sorting(object sender,GridViewSortEventArgs e)
  2. {
  3. if ((string)ViewState["SortColumn"] == e.SortExpression)
  4. {
  5. ViewState["SortDirection"] = ((string)ViewState["SortDirection"] == "") ? " DESC" : "";
  6. grdProducts.HeaderRow.Cells[GetColumnIndex( e.SortExpression )].CssClass = "AscendingHeaderStyle";
  7. }
  8. else
  9. {
  10. ViewState["SortColumn"] = e.SortExpression;
  11. ViewState["SortDirection"] = "";
  12. grdProducts.HeaderRow.Cells[GetColumnIndex( e.SortExpression )].CssClass = "DescendingHeaderStyle";
  13. }
  14. BindGrid();
  15. }
  16.  
  17.  
  18.  
  19.  
  20. private int GetColumnIndex( string SortExpression )
  21. {
  22. int i = 0;
  23. foreach( DataControlField c in gvwCustomers.Columns )
  24. {
  25. if( c.SortExpression == SortExpression )
  26. break;
  27. i++;
  28. }
  29. return i;
  30. }

猜你在找的asp.Net相关文章