2009-04-01 4 views
0

Ceci est mon code pour l'événement Page_LoadCode pour créer un tri pour un GridView dans ASP.net dans Code Behind?

  OdbcConnection myConnection; 
      DataSet dataSet = new DataSet(); 
      OdbcDataAdapter adapter; 

      //making my connection 
      myConnection = new OdbcConnection(ConfigurationManager.ConnectionStrings ["ODBC_ConnectionString"].ConnectionString); 

      adapter = new OdbcDataAdapter("SELECT * from Company", myConnection); 

      adapter.Fill(dataSet, "MyData"); 

      GridView1.DataSource = dataSet; 
      Session["DataSource"] = dataSet; 
      GridView1.DataBind(); 

Ceci est mon code pour l'événement PageIndexChanging et tout fonctionne très bien.

  DataSet ds = new DataSet(); 

      if (Session["DataSource"] != null) 
       ds = ((DataSet)Session["DataSource"]); 

      GridView1.DataSource = ds; 
      GridView1.PageIndex = e.NewPageIndex; 
      this.GridView1.DataBind(); 

Maintenant, de quel code ai-je besoin pour créer l'événement Sorting?

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
    { 
     ????????????????????????? 
    } 

Etienne

Répondre

0

Vous pouvez filtrer et trier votre ensemble de données en utilisant:

ds.Tables[0].Select(filterExp, sortExp, etc...); 
1

que je fais habituellement ceci:

public string SortField { 
      get { 
       return (string) ViewState["_sortField"]; 
      } 
      set { 
       ViewState["_sortField"] = value; 
      } 
     } 
     public string SortDir { 
      get { 
       return (string) ViewState["_sortDir"]; 
      } 
      set { 
       ViewState["_sortDir"] = value; 
      } 
     } 

Mettez votre code pour faire databinding dans une autre méthode parce que vous devez l'appeler pendant le tri, la pagination et le chargement initial de votre page. Appelez DoDataBind() par exemple. Ensuite, vous avez à DoDataBind()

DataTable dt = yourDataSet.Tables[0]; 
dt.DefaultView.Sort = SortField + " " + SortDir; 

GridView1.DataSource = dt.DefaultView; 
GridView1.DataBind(); 

Alors votre événement ressemble à ceci:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { 

      if (e.SortExpression == SortField && SortDir != "desc") { 
       SortDir = "desc"; 
      } 
      else { 
       SortDir = "asc"; 
      } 

      SortField = e.SortExpression; 

      DoDataBind(); 
     } 

ensuite dans votre page ASPX vous aurez besoin de préciser ce que le SortExpression est. Par exemple quelque chose comme ceci:

<asp:BoundField DataField="FIRSTNAME" 
HeaderText="First Name" SortExpression="FIRSTNAME" /> 
+0

Merci pour la réponse ... Pas sûr de ce que vous voulez dire avec "Mettez votre code pour faire la liaison de données dans une autre méthode" Quel code? Le code que tu m'as donné? – Etienne

+0

Le code pour créer une base de données sur la grille. Donc ceci: OdbcConnection myConnection; DataSet dataSet = new DataSet(); Adaptateur OdbcDataAdapter; ... snip ... adaptateur.Fill (dataSet, "MyData"); // Puis le code que j'ai mentionné: DataTable dt = dataSet.Tables [0]; dt.DefaultView.Sort = SortField ... etc – aquinas

Questions connexes