SortedAscendingHeaderStyle-CssClass перезаписывает столбец HeaderStyle CssClass - PullRequest
0 голосов
/ 27 мая 2019

При сортировке 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, но ничего не изменилось.

В жизни страницы есть другие события, которые я могу попытаться вызвать своим методом?или есть лучшее решение?

...