2014-08-15 2 views
0

есть ли способ конвертировать DataView в DataSource?Как отличить DataView с DataSource

Я пытаюсь сортировать столбцы gridview при щелчке. Вот код:

internal static string sort(object _sender, GridViewSortEventArgs _e, string _viewStateSortExpression, string _viewStateSortDirection) 
     { 
      string expression = _e.SortExpression; 
      string direction = getSortDirection(expression, _viewStateSortExpression, _viewStateSortDirection); //ascending by default 

      GridView gvSrc = (GridView)_sender; 

      DataView dv = new DataView(); 
      gvSrc.DataSource = dv; 
      gvSrc.DataBind(); 



      dv = (DataView)((SqlDataSource)gvSrc.DataSource).Select(DataSourceSelectArguments.Empty); 


      dv.Sort = expression + " " + direction; 
      return direction; 
     } 

Я получаю эту ошибку, когда я нажимаю столбец для сортировки:

Unable to cast object of type 'System.Data.DataView' to type 'System.Web.UI.WebControls.SqlDataSource'. 
+1

Пробовали ли вы литья непосредственно вместо первой отливки 'SqlDataSource ', а затем' DataView'? –

+0

@ shree.pat18 Я получаю эту ошибку: DataTable должен быть установлен до использования DataView. – user1800674

ответ

4

Преобразовать DataView к DataTable:

есть метод, называемый ToTable для преобразования DataView в DataTable

DataTable dt=dv.ToTable();// this method may expects parameters 

Преобразовать DataTable в DataView:

DefaultView это свойство, которое возвращает объект DataView в виде DataTable

DataView dv=dt.DefaultView 
+0

GridView gvSrc = (GridView) _sender; DataView dv = new DataView(); gvSrc.DataSource = dv; gvSrc.DataBind(); DataTable dt = new DataTable(); dt = dv.ToTable(); dv = dt.DefaultView; Это также вызывает ошибку: ссылка объекта не установлена ​​в экземпляр объекта. – user1800674

0

Попробуйте это,

DataTable m_DataTable = gvSrc.DataSource as DataTable; 

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

     gvSrc.DataSource = m_DataView; 
     gvSrc.DataBind(); 
    } 
Смежные вопросы