2009-08-10 11 views
5

Sto cercando di implementare l'ordinamento funzionalità in vista griglia, ma la sua non funziona .. Codice:Come implementare la funzionalità di ordinamento in gridview?

//enter code here 
public partial class _Default : System.Web.UI.Page 
{ 
SqlConnection con; 
SqlCommand cmd; 
DataSet ds; 
SqlDataAdapter da; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Session["myDataSet"] = FillDataSet(); 

    } 
} 

private string ConvertSortDirectionToSql(SortDirection sortDirection) 
{ 
    string newSortDirection = String.Empty; 

    switch (sortDirection) 
    { 
     case SortDirection.Ascending: 
      newSortDirection = "ASC"; 
      break; 

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

    return newSortDirection; 
} 
protected DataSet FillDataSet() 
{ 
    string source = "Database=GridTest;Server=Localhost;Trusted_Connection=yes"; 
    con = new SqlConnection(source); 
    cmd = new SqlCommand("proc_mygrid", con); 
    ds = new DataSet(); 
    da = new SqlDataAdapter(cmd); 
    da.Fill(ds); 
    GridView1.DataSource = ds; 
    GridView1.DataBind(); 

    return ds; 
} 

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
{ 

    //DataSet ds = FillDataSet(); 
    DataTable dt = ((DataSet)Session["myDataSet"]).Tables[0]; 
    if (dt != null) 
    { 
     dt.DefaultView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

Qualcuno può suggerire dove sto andando male?

EDIT:

enter code here DataTable dtbl = ((DataSet)Session["myDataSet"]).Tables[0]; 
    dtbl.DefaultView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); 
    GridView1.DataSource = dtbl; 
    GridView1.DataBind(); 

risposta

1

Ecco il codice in esecuzione:

private string GetSortDirection(string column) 
{ 


    string sortDirection = "DESC"; 


    string sortExpression = ViewState["SortExpression"] as string; 

    if (sortExpression != null) 
    { 

     if (sortExpression == column) 
     { 
      string lastDirection = ViewState["SortDirection"] as string; 
      if ((lastDirection != null) && (lastDirection == "DESC")) 
      { 
       sortDirection = "ASC"; 
      } 
     } 
    } 


    ViewState["SortDirection"] = sortDirection; 
    ViewState["SortExpression"] = column; 

    return sortDirection; 
} 

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
{ 

    DataTable dtbl = ((DataSet)Session["myDataSet"]).Tables[0]; 
    dtbl.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression); 
    GridView1.DataSource = dtbl; 
    GridView1.DataBind(); 

}

Problemi correlati