2010-11-15 5 views
2

je veux filtrer le gridview sur textchange dans le champ de recherche .... si j'appuie sur un caractère comme "S" le gridview devrait remplir avec record commençant par "S".Filtrer dans un ensemble de données dans asp.net C#

Public class DALDepartment 
{ 
public Dataset DepartmentSearch(string Connectionstring, string conditon) 
{ 
SqlConnection connection = new SqlConnection(connectionstring); 
      SqlCommand command = new SqlCommand("select departmentname,departmentcode from Department" + condition, connection);     
      SqlDataAdapter adapter = new SqlDataAdapter(command); 
      DataSet ds = new DataSet(); 
      try 
      { 
       connection.Open();   //Opening Connection     
       adapter.Fill(ds, "Department");  //Filling values to Dataset from Adapter 
       connection.Close();   //closing connection 
      } 
      catch (Exception e) 
      { 
       ErrorCollection.AddErrors("XMS0000", e.Data + e.Message); 
       return null; 
      } 
      return ds; 
      } 
     } 

//Dep.Aspx.cs in the asp page 
DataSet ds = new DataSet(); 
     string condition = "where departmentname LIKE '%" + Textbox1.Text + "%'" ; 
     ds=DepartmentSearch(Connectionstring,condition); 
     GridView1.DataSource = ds.Tables["Department"]; 
     GridView1.DataBind(); 

Ce code ci-dessus fonctionne correctement. Maintenant, j'ai besoin de trier cela dans l'ensemble de données. que je me suis stocké à l'intérieur du jeu de données, lorsque le pageload. Pour exampe:

//The Data's are found and loaded in a dataset 

SqlCommand command = new SqlCommand("select departmentname,departmentcode from 
Department" , connection); 
      SqlDataAdapter adapter = new SqlDataAdapter(command); 
      DataSet ds = new DataSet(); 
       connection.Open();   
       adapter.Fill(ds, "Department"); 
       connection.Close();   


//In dataset 

DataSet ds = new DataSet(); 
ds = DepartmentSearch(Connectionstring); 

Maintenant, je ne sais pas comment filtrer les valeurs à l'intérieur de l'ensemble de données.

Je tiens à vous remercier d'avance pour vos réponses et suggestions.

Répondre

3

Vous pouvez utiliser la fonction Sélectionnez dans le cas de DataTable -à-dire

dtNames.Select ("nom comme« un%");

Vous serez trie le nom .Remember ce nom doit être une colonne de votre datatable.So pour la prochaine fois que vous pouvez rechercher uniquement en changeant l'alphabet pas besoin d'exécuter la query.But cette méthode permet de récupérer uniquement données qui sont disponibles uniquement lorsque la première requête est exécutée. Si des modifications ont été apportées à la base de données, elles ne seront reflétées qu'après l'exécution de la requête.

2

si vous essayez de sélectionner et trier quelques lignes de votre base de données, vous devez changer votre commande select comme ceci:

SqlCommand command = new SqlCommand("select departmentname, departmentcode from Department " + condition + "order by departmentname", connection); 

ce que vous voulez est de trier juste dans votre ensemble de données. Je dois dire que c'est impossible d'une autre manière.
vous pouvez faire ce que vous voulez avec une BindingSource.

BindingSource bs = new BindingSource(); 
bs.DataSource = ds; 
bs.Sort = "departmentname asc"; 
bs.Filter = "departmentname like 'depa%'";
+0

Je souhaite que le filtre ne soit pas trié directement dans la base de données –

Questions connexes