2009-04-01 11 views
0

Dies ist mein Code Code für die Page_Load EreignisCode zum Erstellen der Sortierung für eine GridView in ASP.net in Code hinter?

  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(); 

Dies ist mein Code für das Ereignis und es Pageindexchanging alles funktioniert gut.

  DataSet ds = new DataSet(); 

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

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

Nun, welchen Code brauche ich, um das Sortierereignis zu erstellen?

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

Etienne

Antwort

0

Sie können Ihre Datenmenge filtern und sortieren mit:

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

ich dies in der Regel tun:

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

Setzen Sie Ihren Code Datenbindung in eine andere Methode zu tun, weil Sie müssen es während Sort, Paging und beim ersten Laden Ihrer Seite aufrufen. Nennen Sie es DoDataBind() zum Beispiel. Dann haben Sie in DoDataBind()

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

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

dann Ihre Veranstaltung sieht wie folgt aus:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { 

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

      SortField = e.SortExpression; 

      DoDataBind(); 
     } 

dann in Ihrer aspx Seite müssen Sie angeben, was die SortExpression ist. Zum Beispiel:

+0

Danke für die Antwort ... Nicht sicher, was Sie mit "Stellen Sie Ihren Code in eine andere Methode Databinding tun" Was Code? Der Code, den du mir gegeben hast? – Etienne

+0

Der Code zum Speichern des Rasters. Also das: OdbcConnection myConnection; DataSet dataSet = neues DataSet(); OdbcDataAdapter-Adapter; ... snip ... adapter.Fill (dataSet, "MyData"); // Dann der Code, den ich erwähnte: DataTable dt = dataSet.Tables [0]; dt.DefaultView.Sort = SortField ... usw. – aquinas

Verwandte Themen