Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在GridView中显示基于排序类型的图像_C#_Css_Asp.net_Sorting_Gridview - Fatal编程技术网

C# 如何在GridView中显示基于排序类型的图像

C# 如何在GridView中显示基于排序类型的图像,c#,css,asp.net,sorting,gridview,C#,Css,Asp.net,Sorting,Gridview,我有一个GridView,我正在按ASC/DESC对其进行排序,我想显示一个箭头图像 我有以下资料: <asp:GridView AlternatingRowStyle-BackColor="#E2E2E2" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" AllowSorting="true" ID="yourTasksGV" runat="server" ClientIDMode="Static" EmptyDat

我有一个
GridView
,我正在按ASC/DESC对其进行排序,我想显示一个箭头图像

我有以下资料:

<asp:GridView AlternatingRowStyle-BackColor="#E2E2E2" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" AllowSorting="true" ID="yourTasksGV" runat="server" ClientIDMode="Static" EmptyDataText="There is no data to display">
                                <SortedAscendingHeaderStyle CssClass="gvAsc" />
                                <SortedDescendingHeaderStyle CssClass="gvDesc" />
                                <Columns>
                                    <asp:HyperLinkField Target="_blank" DataNavigateUrlFields="Task Detail" DataTextField="Task Name" DataNavigateUrlFormatString="" HeaderText="Task Details" SortExpression="Task Detail" ItemStyle-Width="35%" ItemStyle-CssClass="taskTableColumn" />
                                    <asp:BoundField DataField="Services" HeaderText="Services" SortExpression="Services" ItemStyle-Width="25%" ItemStyle-CssClass="taskTableColumn" />
                                    <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" ItemStyle-Width="15%" ItemStyle-CssClass="taskTableColumn" />
                                    <asp:BoundField DataField="Due Date" HeaderText="Due Date" SortExpression="Due Date" ItemStyle-Width="15%" ItemStyle-CssClass="taskTableColumn" />
                                </Columns>
                            </asp:GridView>
正在进行排序,但未根据排序显示箭头


如何解决这个问题?

下面是我使用的,我喜欢它,因为它只为一个数据绑定事件触发一次,而不是为每行触发一次

protected void GridView1_DataBound(object sender, EventArgs e)
{ 
     if (String.Empty != this.GridView1.SortExpression) 
            AddSortImage(GridView1.HeaderRow); 
}
支持方法有:

void AddSortImage(GridViewRow headerRow) 
{ 
     int iCol = GetSortColumnIndex();
     if (-1 == iCol) 
           return; 

     // Create the sorting image based on the sort direction.

     Image sortImage = new Image();
     if (SortDirection.Ascending == this.GridView1.SortDirection) 

{             sortImage.ImageUrl = @"~\Images\BlackDownArrow.gif"; 
               sortImage.AlternateText = "Ascending Order"; 
}     else  
{
             sortImage.ImageUrl = @"~\Images\BlackUpArrow.gif";
             sortImage.AlternateText = "Descending Order";
}
      // Add the image to the appropriate header cell. 
        headerRow.Cells[iCol].Controls.Add(new LiteralControl("&nbsp;"));
        headerRow.Cells[iCol].Controls.Add(sortImage); 
} 

public int GetSortColumnIndex() 
{ 
      // Iterate through the Columns collection to determine the index 
      // of the column being sorted. 
      foreach (DataControlField field in GridView1.Columns) 
       { 
             if (field.SortExpression == this.GridView1.SortExpression) 
               { 
                  return this.GridView1.Columns.IndexOf(field); 
                }
         } 
      return -1;
}

那么您正在GridView控件中使用OnDataBound?tru这个有用的链接谢谢。我添加了自己的方法,效果很好。
void AddSortImage(GridViewRow headerRow) 
{ 
     int iCol = GetSortColumnIndex();
     if (-1 == iCol) 
           return; 

     // Create the sorting image based on the sort direction.

     Image sortImage = new Image();
     if (SortDirection.Ascending == this.GridView1.SortDirection) 

{             sortImage.ImageUrl = @"~\Images\BlackDownArrow.gif"; 
               sortImage.AlternateText = "Ascending Order"; 
}     else  
{
             sortImage.ImageUrl = @"~\Images\BlackUpArrow.gif";
             sortImage.AlternateText = "Descending Order";
}
      // Add the image to the appropriate header cell. 
        headerRow.Cells[iCol].Controls.Add(new LiteralControl("&nbsp;"));
        headerRow.Cells[iCol].Controls.Add(sortImage); 
} 

public int GetSortColumnIndex() 
{ 
      // Iterate through the Columns collection to determine the index 
      // of the column being sorted. 
      foreach (DataControlField field in GridView1.Columns) 
       { 
             if (field.SortExpression == this.GridView1.SortExpression) 
               { 
                  return this.GridView1.Columns.IndexOf(field); 
                }
         } 
      return -1;
}