2010-10-19 5 views
2

У меня есть gridview, где я привязываю источник данных, и мне пришлось добавить сортировку для этого gridview; Я добавил код ниже, но это не сработало.Сортировка gridview

private string ConvertSortDirectionToSql(SortDirection sortDireciton) 
{ 
    string m_SortDirection = String.Empty; 

    switch (sortDireciton) 
    { 
     case SortDirection.Ascending: 
      m_SortDirection = "ASC"; 
      break; 

     case SortDirection.Descending: 
      m_SortDirection = "DESC"; 
      break; 
    } 

    return m_SortDirection; 
} 

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    DataTable m_DataTable = GridView1.DataSource as DataTable; 

    if (m_DataTable != null) 
    { 
     DataView m_DataView = new DataView(m_DataTable); 
     m_DataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); 

     GridView1.DataSource = m_DataView; 
     GridView1.DataBind(); 
    } 
} 
+1

Какая ошибка? – FosterZ

+0

В чем проблема, вы получаете? как вы можете сказать, что он плохо работает? –

+0

Извините, у него ничего не было, но он не работал – Myworld

ответ

1

Вы можете использовать это, поскольку у меня была та же проблема, и я решил это так.

public string SortingExpression 
{ 
    get 
    { 
     if (this.ViewState["SortExpression"] == null) 
      return ""; 
     else 
      return (string)this.ViewState["SortExpression"]; 
    } 

    set 
    { 
     this.ViewState["SortExpression"] = value; 
    } 
} 

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    DataTable m_DataTable = GridView1.DataSource as DataTable; 

    if (m_DataTable != null) 
    { 
     DataView m_DataView = new DataView(m_DataTable); 
     SortingExpression = e.SortExpression + " " + (SortingExpression.Contains("ASC") ? "DESC" : "ASC"); 
     m_DataView.Sort =SortingExpression; 

     GridView1.DataSource = m_DataView; 
     GridView1.DataBind(); 
    } 
} 
+0

Это не помогло Но когда я сделал точку останова в GridView1_Sorting. У меня были нулевые данные в таблице. И эта ошибка появляется (DataTable должен быть установлен до использования DataView), когда я hashed if (m_DataTable! = Null) – Myworld

1

Может this может помочь, если ваш SortDirection всегда поднимается.

1

Попробуйте это. Этот метод работал для меня.

dt - это datatable, содержащий значения.

protected void onSorting_Gridview1(object sender, GridViewSortEventArgs e) 
      { 
       string _sortDirection = dir.ToString(); 
       if(_sortDirection.Equals("Ascending")) 
       { 
       _sortDirection = "ASC"; 
       dir = SortDirection.Descending; 

      } 
      else 
      { 
       _sortDirection="DESC"; 
       dir = SortDirection.Ascending; 

      } 

      if (dt != null) 
      { 
       //Sort the data. 
       dt.DefaultView.Sort = e.SortExpression + " " + _sortDirection; 
       gridView1.DataSource = dt; 
       gridView1.DataBind(); 
      } 

     } 


public SortDirection dir 
    { 
     get 
     { 
      if (ViewState["DIR"] == null) 
      { 
       ViewState["DIR"] = SortDirection.Ascending; 
      } 
      return (SortDirection)ViewState["DIR"]; 
     } 
     set 
     { 
      ViewState["DIR"] = value; 
     } 
    } 
Смежные вопросы