Почему SortExpression GridView становится пустым в RowDataBound - C# - PullRequest
0 голосов
/ 08 февраля 2020

Я хочу показать стрелку вверх / вниз на заголовке моего вида сетки сортировки. Я реализовал это в коде, прикрепленном ниже, но в событии, связанном с данными строки, sortexpression оказывается пустым. Из-за этого я не могу установить изображение для направления сортировки.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CssClass="gridview_alter"  GridLines="Both"  
Caption="Submissions today"  CaptionAlign="Top"          
AllowSorting="true"
AllowPaging="true"  PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging" 
OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound" 
OnSorting="GridView1_Sorting">

<Columns>
<asp:BoundField DataField="student_name" HeaderText="student_name" 
ReadOnly="True"  SortExpression="student_name">  </asp:BoundField>                             
<asp:BoundField DataField="Role" HeaderText="Role" 
ReadOnly="True"  SortExpression="Role">  </asp:BoundField>                  
</Columns> 

</asp:GridView>

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
  string imgAsc = @" <img src='~/images/up.png' border='1' title='Ascending' 'width='50' height='50' />";
  string imgDes = @" <img src='~/images/dwn.png' border='1' title='Descendng' 'width='50' height='50' />";
 if (e.Row.RowType == DataControlRowType.Header)
 {
        foreach (TableCell td in e.Row.Cells)
        {
         LinkButton lnkbtn = (LinkButton)td.Controls[0];

        if (lnkbtn.Text == GridView1.SortExpression)//sortexpression is grtting empty here
            {
                if (GridView1.SortDirection == SortDirection.Ascending)
                {
                    lnkbtn.Text += imgAsc;
                }
                else
                    lnkbtn.Text += imgDes;
            }
        }
    }

1 Ответ

0 голосов
/ 16 февраля 2020

Лучшим местом для проверки сортекса (и любой работы, выполняемой на основе сортировки) будет событие Gridview OnSorting Событие.

Итак, в В этом событии OnSorting вы можете получить строку заголовка и применить изображение AS C / DES C.

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
  {
    // Get the header row.
    GridViewRow headerRow = GridView1.HeaderRow;
    if(headerRow != null)
     {
        foreach (TableCell td in headerRow.Cells)
         {
            LinkButton lnkbtn = (LinkButton)td.Controls[0];

             if (lnkbtn.Text == e.SortExpression)
               {
                  if (GridView1.SortDirection == SortDirection.Ascending)
                  {
                      lnkbtn.Text += imgAsc;
                  }
                  else
                    lnkbtn.Text += imgDes;
               }
         }        
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...