Мой вопрос: как заставить GridView показывать стрелки при сортировке и связывать с общим списком?
Я тестирую новые свойства в ASP.NET для отображения стрелок при сортировке в GridView после этой записи в блоге http://blogs.msdn.com/b/scothu/archive/2010/08/28/gridview-with-sort-arrows-and-showing-header-when-empty.aspx.
Моя разметка aspx такая же
<asp:GridView ID="GridView2" runat="server" AllowSorting="true" CssClass="gridView"
...
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" CssClass="SortedAscending" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" CssClass="SortedDescending" />
...
</asp:GridView>
Это прекрасно работает для меня, когда GridView связан с SqlDataSource или DataSet, и я видел в статьях, что ObjectDataSource тоже работает хорошо. Он генерирует что-то вроде следующей разметки HTML.
<th style="background-color: rgb(109, 149, 225);" scope="col" class="SortedAscending"><a style="color: White;" href="javascript:__doPostBack('ctl00$MainContent$GridView3','Sort$Name')">Name</a></th>
Важная вещь, которую я вижу здесь, это class="SortedAscending"
. Это имя я дал атрибуту SortedAscendingHeaderStyle
страницы aspx.
Моя проблема в том, что мои BLL возвращают generic List<T>
, и когда я связываю их с GridView, он генерирует что-то вроде следующей разметки HTML.
<th scope="col"><a style="color: White;" href="javascript:__doPostBack('ctl00$MainContent$GridView2','Sort$Name')">Name</a></th>
В этой разметке мне не хватает class="SortedAscending"
, и поэтому у меня возникают проблемы с получением стрелок в моем GridView.