A rendezéshez létre kell hoznunk egy string kifejezést, melyben megadhatjuk, hogy mely oszlopok szerint szeretnénk rendezni a sorokat, és milyen irányban.
„Price DESC, Title ASC”
Egy táblához több nézet
Nézzünk egy példát erre:
using System; using System.Diagnostics;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Data.SqlClient;namespace Akadia.DataView { public class FilterOrder : System.Windows.Forms.Form { .... private SqlConnection cn; private SqlCommand cmd; private SqlDataAdapter da; private DataSet ds; public FilterOrder() { try { InitializeComponent(); // Initializing cn = new SqlConnection(" server=xeon;database=northwind;uid=sa;pwd=manager"); cmd = new SqlCommand("SELECT * FROM orders",cn); da = new SqlDataAdapter(cmd); ds = new DataSet(); // Kezdő adatok betöltése RetrieveData(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } // Orders Tábla adatai private void RetrieveData() { try { da.Fill(ds,"Orders"); DataGrid.DataSource = ds.Tables[0]; // Combobox feltöltése a mezőnevekkel FillSortCriteria(); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); MessageBox.Show(ex.ToString()); } } // Combobox feltöltése a mezőnevekkel private void FillSortCriteria() { try { if (cmbSortArg.Items.Count > 0) { return; } foreach (DataColumn dc in ds.Tables[0].Columns) { cmbSortArg.Items.Add(dc.Caption); // Sort Combobox cmbFields.Items.Add(dc.Caption); // Filter on Column Combobox } } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } // Setup Szűrőfeltétel beállítása private void SetFilter(string strFilterExpression) { try {
ds.Tables[0].DefaultView.RowFilter = strFilterExpression; // Kiolvassuk a rekordszámot a DataViewban if (ds.Tables[0].DefaultView.Count > 0) { DataGrid.DataSource = ds.Tables[0].DefaultView; } else { MessageBox.Show("Filter criteria does not meet criteria"); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } private void btnQuery_Click(object sender, System.EventArgs e) { try { // Clear DataSet ds.Clear(); // Clear Filter ds.Tables[0].DefaultView.RowFilter = ""; // Re-Retrieve Data RetrieveData(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } // Beállítjuk a DataViewban a rendezést private void btnSort_Click(object sender, System.EventArgs e) { try { string strSort; // IF Radiobox "Ascending" is checked, then // sort ascending ... if (rbAsc.Checked) { strSort = cmbSortArg.Text + " ASC"; // Note space after " } // ... else descending else { strSort = cmbSortArg.Text + " DESC"; // Note space after " } // Érvényesítjük a rendezést ds.Tables[0].DefaultView.Sort = strSort; DataGrid.DataSource = ds.Tables[0].DefaultView; } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } private void btnFilterTitle_Click(object sender, System.EventArgs e) { try { SetFilter("CustomerID like '" + txtFilter.Text + "'"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } private void btnGeneralFilter_Click(object sender, System.EventArgs e) { try { SetFilter(txtGeneralFilter.Text); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } private void btnFilteronColumn_Click(object sender, System.EventArgs e) { try { SetFilter(cmbFields.Text + " " + txtFilterColumn.Text); } catch (Exception ex) { MessageBox.Show(ex.ToString()); Console.WriteLine(); } } ... [STAThread] static void Main() { Application.Run(new FilterOrder()); } }}