2013-10-15 41 views
0

我有一个Gridview名为SearchGenericReport。我想要在Gridview Columns的标题中对图像进行上下排序。但GetSortColumnIndex(string strrCol)总是返回- value。所以我不能添加图像。我在这里错过了什么?在gridview标题中排序图像

public int GetSortColumnIndex(String strCol) 
{ 
    DataTable result= Session["TaskTable"] as DataTable; 
    foreach (DataControlField field in result.Columns) 
    { 
     if (field.SortExpression == strCol) 
     { 
      return SearchGenericReport.Columns.IndexOf(field); 
     } 
    } 

    return -1; 
} 
void AddSortImage(GridViewRow headerRow) 
{ 

    int selCol = GetSortColumnIndex(m_strSortExp); 

    //if (-1 == selCol) 
    //{ 
    // return; 
    //} 

    // Create the sorting image based on the sort direction 
    Image sortImage = new Image(); 

    if (SortDirection.Ascending == m_SortDirection) 
    { 
     sortImage.ImageUrl = "img/uparrow.png"; 
     sortImage.AlternateText = "Ascending"; 
    } 
    else 
    { 
     sortImage.ImageUrl = "img/downarrow.png"; 
     sortImage.AlternateText = "Descending"; 
    } 

    // Add the image to the appropriate header cell 
    headerRow.Cells[selCol].Controls.Add(sortImage); 

} 

但是,当我快速监视在gridview.Columns - 它在 “enumertaion没有结果” 的结果和一些东西。 及其多年平均值进入For Each循环仅..我已经修改这样的代码 - INT GetSortColumnIndex(){

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

     return -1; 
    } 
    void AddSortImage(int columnIndex,GridViewRow headerRow) 
    { 
     // Create the sorting image based on the sort direction 
     Image sortImage = new Image(); 
     SortDirection direction = SearchGenericReport.SortDirection; 
     if (direction == SortDirection.Ascending) 
     { 
      sortImage.ImageUrl = "img/uparrow.png"; 
      sortImage.AlternateText = "Ascending"; 
     } 
     else 
     { 
      sortImage.ImageUrl = "img/downarrow.png"; 
      sortImage.AlternateText = "Descending"; 
     } 

     // Add the image to the appropriate header cell 
     headerRow.Cells[columnIndex].Controls.Add(sortImage); 
    } 

回答

0

当多个列进行排序,字段。 SortExpression属性包含用于排序的字段的逗号分隔列表。所以你可以尝试使用Contains(strCol)

更好的解决方案是分割逗号分隔的字符串表达式并检查它是否有列strCol