<asp:ImageButton ID="lnkEmpIdUp" runat="server" ImageUrl="~/Images/upArrow.png" CommandName="EMP_ID_NO" OnClick="lnkSorting_Click" />
<asp:ImageButton ID="lnkEmpIdDown" runat="server" ImageUrl="~/Images/downArrow.png" CommandName="EMP_ID_NO" OnClick="lnkSorting_Click" />
Как говорится в приведенном выше коде, есть кнопка с двумя изображениями (Сохранено в шаблоне заголовка Gridview), при нажатии которой выполняется сортировка. Если внимательно присмотреться, оба элемента управления будут иметь одинаковое имя команды и одно и то же событие onClick.
Событие OnClick обрабатывает столбец, который будет отсортирован по имени команды, а направление сортировки - через скрытое поле. См. Ниже код
protected void lnkSorting_Click(object sender, EventArgs e)
{
// Initialize variables
//Get Dataset values here for the grid.
var imgSort = sender as ImageButton;
string colName = imgSort.CommandName;
if (imgSort.ImageUrl.Trim().ToUpper().Contains(("up").ToUpper())) // If Up(Ascending)arrow is clicked.
{
if (hdnSortDir.Value.Equals(string.Empty) || hdnSortDir.Value.ToString().Equals("desc"))
{
hdnSortDir.Value = "asc";
//imgSort.ImageUrl = "~/Images/ascending.gif";
}
}
else if (imgSort.ImageUrl.Trim().ToUpper().Contains(("down").ToUpper()))
{
hdnSortDir.Value = "desc";
}
.....Sorting Logic...
}
Мое сомнение: как я могу изменить изображение во время выполнения, когда сортировка выполняется в gridview? Скажем, после сортировки столбца «Имя сотрудника» по возрастанию восходящее изображение для этого столбца должно измениться на другое изображение, чтобы пользователь мог определить, какой столбец сортируется и в каком направлении.
Пожалуйста помоги!!!
Благодарность!
2 ответа
То же самое можно сделать в rowdatabound, задав значения выражения сортировки и направления сортировки в скрытом поле.
Обычно для сортировки, когда вы устанавливаете AllowSorting="true"
, вы можете щелкнуть заголовок столбца для сортировки. Повторный щелчок изменит направление сортировки. Для индикации сортировки до ASP.NET 4 вы должны написать собственный код для вставки изображения в заголовок столбца, чтобы указать направление сортировки. Однако с ASP.NET 4 вы можете использовать SortedAscendingHeaderStyle и SortedDescendingHeaderStyle свойства, чтобы связать какой-либо стиль или класс CSS с заголовками (у вас также есть свойства для стилизации отсортированных ячеек - см. SortedAscendingCellStyle & SortedDescendingCellStyle) - поэтому обычно у вас может быть CSS, который устанавливает фоновое изображение для отображения направления сортировки в заголовке столбца.
Посмотрите эти статьи, чтобы лучше понять подход:
- http://imar.spaanjaars.com/511/look-ma-no-code-using-sorted-styles-in-aspnet-4
- http://www.4guysfromrolla.com/articles/020310-1.aspx
РЕДАКТИРОВАТЬ . Как сказано выше, для ASP.NET 2.0–3.5 вам необходимо написать собственный код, чтобы поместить эти значки сортировки в заголовки столбцов. Например, см. эту статью, где вид сетки расширен, чтобы сделать то же самое. ИЛИ см. this, где событие RowDataBound
используется для применения класса css в заголовок столбца (классы будут устанавливать фоновое изображение для сортировки) ИЛИ см. это, что использует событие RowCreated
для фактического добавления элемента управления изображением в ячейку заголовка. Существует довольно много альтернативных, но похожих вариантов - лично я предпочитаю второй подход применения классов CSS.
Похожие вопросы
Связанные вопросы
Новые вопросы
asp.net
ASP.NET - это среда разработки веб-приложений Microsoft, которая позволяет программистам создавать динамические веб-сайты, веб-приложения и веб-службы. Полезно использовать этот тег в сочетании с тегом типа проекта, например, [asp.net-mvc], [asp.net-webforms] или [asp.net-web-api]. НЕ используйте этот тег для вопросов о ASP.NET Core - используйте вместо этого [asp.net-core].