c# - 获取 GridView 的列标题的 css

标签 c# css asp.net gridview

我在 GridView 中使用自定义排序,它通过单击标题文本按该列排序来工作。现在我想在标题文本旁边添加一个小箭头以指示排序方向。我正在用 css 样式来做这件事并且它有效。问题是这样做,之前设置的css样式(在aspx文件中)就没有了。

要反驳这一点,人们会认为这只是获取当前 css 样式字符串并附加新样式的问题。说起来容易做起来难。

我试过:

gvDocs.HeaderStyle.CssClass;   // returns an empty string
gvDocs.HeaderRow.CssClass;   // returns an empty string
gvDocs.HeaderRow.Cells[i].CssClass;   // returns an empty string
gvDocs.HeaderRow.Cells[i].Attributes["class"];   // returns null
LinkButton lb = gvDocs.HeaderRow.Cells[i].Controls[0] as LinkButton;
lb.CssClass;   // returns an empty string
lb.Attributes["class"];   // returns null

我试着把代码放在几乎所有地方,但结果总是一样。

接下来是 aspx 文件的片段

<asp:GridView ID="gvDocs" runat="server" CssClass="table" ...
    <Columns>
        <asp:BoundField DataField="doc_number" HeaderText="#" ReadOnly="True" SortExpression="doc_number" ShowHeader="True">
            <HeaderStyle CssClass="vert-align" />
            <ItemStyle CssClass="vert-align" />
        </asp:BoundField>
...

不是每个标题都有相同的 css 样式所以我真的需要知道当前的样式是什么并附加一个以显示箭头。

我正在像这样更新 gcDocs_Sorting 事件中的 css 样式:

 gvDocs.HeaderRow.Cells[GetColumnIndex(Session[GV_ORDERS_SORT_FIELD].ToString(), gvDocs)].CssClass += " sortDesc";
// or "sortAsc", depends on the result of a previous `if`.

那么如何获取列标题的当前 css 呢?

最佳答案

你可以让GridView自动添加css类来进行排序

您可以在代码中执行此操作:

gvDocs.SortedAscendingHeaderStyle.CssClass = "sorted-asc";
gvDocs.SortedAscendingCellStyle.CssClass = "sorted-asc";
gvDocs.SortedDescendingHeaderStyle.CssClass = "sorted-desc";
gvDocs.SortedDescendingCellStyle.CssClass = "sorted-desc";

或者直接在 GridView 的标记上:

<asp:GridView ID="gvDocs" runat="server" 
    SortedAscendingHeaderStyle-CssClass="sorted-asc"
    SortedAscendingCellStyle-CssClass="sorted-asc"
    SortedDescendingHeaderStyle-CssClass="sorted-desc"
    SortedDescendingCellStyle-CssClass="sorted-desc">
</asp:GridView>

关于c# - 获取 GridView 的列标题的 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870887/

相关文章:

c# - 无法反序列化当前的 JSON 数组

asp.net - QueryString 不接受 & - 需要

c# - 尝试在 gridview 上更新/取消时无法加载 View 状态?

c# - 如何将可执行文件作为 MDI 子项打开?

c# - 指定 DataContext (WPF) 的正确方法

jQuery 切换类以删除高亮

css - Flexbox 在 IE10+ 和 Edge 中无法正常工作//div 之间的滚动条上出现奇怪的线条

html - 使用选择器时未应用样式

c# - 缓存页面但计算点击次数

c# - 如何在 onDataBinding 事件期间格式化单个 DropDownlist 项目(颜色等)