При сортировке GridView свойство SortedAscendingHeaderStyle-CssClass полностью перезаписывает свойство TemplateField или BoundFiled HeaderStyle-CssClass вместо добавления значений в tail.Я знаю, что стиль сортировки применяется только при использовании SqlDataSource на странице.Фактически, стиль применяется правильно, но классы столбцов полностью удалены.
Я попытался использовать свой пользовательский метод, который я использую для источников данных, не относящихся к SqlDataSource.Этот метод динамически применяет SortedAscendingHeaderStyle-CssClass и SortedDescendingHeaderStyle-CssClass в хвосте столбца CSS без удаления других классов.
Это метод расширения, который я строю
public static void ApplySortCss(this DataControlFieldCollection colums, string sortExpression, SortDirection direction, GridView gv)
{
string ascendingCssClass = gv.SortedAscendingHeaderStyle.CssClass;
string descendingCssClass = gv.SortedDescendingHeaderStyle.CssClass;
foreach(DataControlField c in colums)
{
c.HeaderStyle.CssClass = c.HeaderStyle.CssClass.Replace(ascendingCssClass, string.Empty).Trim();
c.HeaderStyle.CssClass = c.HeaderStyle.CssClass.Replace(descendingCssClass, string.Empty).Trim();
if(c.SortExpression == sortExpression)
c.HeaderStyle.CssClass += $" {(direction == SortDirection.Ascending ? ascendingCssClass : descendingCssClass)}";
}
}
этот код выполняется правильноно когда страница отображается, предыдущие классы всегда перезаписываются.Я пытался использовать этот метод в событиях GridView Sorted, Sorting, DataBound, а также в событии PagePrerender, но ничего не изменилось.
В жизни страницы есть другие события, которые я могу попытаться вызвать своим методом?или есть лучшее решение?