我在 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/