Изменить кнопку сортировки изображения в сетке - PullRequest
0 голосов
/ 25 августа 2011
  <asp:ImageButton ID="lnkEmpIdUp" runat="server" ImageUrl="~/Images/upArrow.png" CommandName="EMP_ID_NO" OnClick="lnkSorting_Click" />
 &nbsp;
 <asp:ImageButton ID="lnkEmpIdDown" runat="server" ImageUrl="~/Images/downArrow.png" CommandName="EMP_ID_NO" OnClick="lnkSorting_Click" />

Как видно из приведенного выше кода, есть кнопка с 2 изображениями (сохраненная в шаблоне заголовка 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...

}

My Doubt: Как я могу изменить изображение во время выполнения, когда сортировка выполняется в gridview? Скажем, после сортировки столбца «Имя сотрудника» по возрастанию восходящее изображение для этого столбца должно измениться на какое-то другое изображение, чтобы пользователь мог определить, какой столбец сортируется и в каком направлении.

Пожалуйста, помогите !!!

Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

То же самое можно сделать в ограничении строки строк, задав выражение сортировки и значения направления сортировки в скрытом поле.

0 голосов
/ 25 августа 2011

Обычно для сортировки, когда вы устанавливаете AllowSorting="true", вы можете щелкнуть заголовок столбца для сортировки. Повторное нажатие переключит направление сортировки. Для индикации сортировки до ASP.NET 4 необходимо написать собственный код для вставки изображения в заголовок столбца, чтобы указать направление сортировки. Однако в ASP.NET 4 вы можете использовать SortedAscendingHeaderStyle & SortedDescendingHeaderStyle свойства, чтобы связать некоторый стиль или класс css с заголовками (у вас также есть свойства для стилизации отсортированных ячеек - см. SortedAscendingCellStyle & SortedDescendingCellStyle ) - поэтому обычно у вас может быть css, задающий фоновое изображение для отображения направления сортировки в заголовке столбца.

Посмотрите на эти статьи, чтобы лучше понять подход:

РЕДАКТИРОВАТЬ : Как уже говорилось выше, для ASP.NET 2.0-3.5 вам нужно написать собственный код для вставки этих значков сортировки в заголовки столбцов. Например, см. в этой статье , где grid-view в расширенном режиме делает то же самое ИЛИ смотрите this , где RowDataBound событие используется для применения класса css к заголовку столбца (классы будут установить фоновую сортировку изображения) ИЛИ см. это , использующее событие RowCreated для фактического добавления элемента управления изображением в ячейку заголовка. Есть довольно много альтернативных, но похожих вариантов, возможно, - лично я предпочитаю второй подход применения классов CSS.

...