2011-04-15 10 views
-1

comment filtrer une liste déroulante? J'ai essayé de faire un code mais cela ne fonctionne pas .. s'il vous plaît vérifier mon code. tnxfiltrer une liste déroulante

DataSet ds = new DataSet(); 
    DataTable dt = ds.Tables.Add("Source"); 

    string category; 
    category = drpCategory.SelectedValue; 
    DataRow[] foundRows; 


    foundRows = table.Select(category); 

    for (int i = 0; i < foundRows.Length; i++) 
    { 
     Console.WriteLine(foundRows[i][0]); 
    } 
+1

Définir "Échec". –

+1

Définir "ne fonctionne pas". –

+0

échoué et de travail –

Répondre

2

Vous pouvez essayer d'utiliser la méthode DataTable.Select(string filterExpression).

+0

C'est quelque chose que je peux certainement utiliser. Merci! +1 Question à vous poser, et s'il y a 4 listes déroulantes (3 remplies avec une table, 1 remplie avec une table différente) Comment puis-je combiner les deux? – SearchForKnowledge

0

Il y a quelques jours, j'ai dû faire quelque chose de similaire. Vous avez la méthode select de datatable, vous pouvez utiliser linq simple, ou une expression lambda. Voici un très petit exemple de code. Dans votre scénario, vous passez simplement la valeur de la catégorie en tant que filtre. J'espère que cela t'aides.

DataTable Dt = new DataTable(); 
Dt.Columns.Add("Name"); 
Dt.Columns.Add("Age"); 

Dt.Rows.Add(new object[] { "Babar", 44 }); 
Dt.Rows.Add(new object[] { "Babul", 55 }); 
Dt.Rows.Add(new object[] { "Bahar", 66 }); 
Dt.Rows.Add(new object[] { "Baird", 3 }); 
Dt.Rows.Add(new object[] { "Cable", 77 }); 

// Linq option 
var q = from r in Dt.AsEnumerable() 
    where r.Field<int>("Age") > 50 
    select r; 

DataRow[] LinkFoundRows = q.ToArray<DataRow>(); 

// Lambda expression option (one liner) 
DataRow[] FoundRows2 = Dt.AsEnumerable().Where(row => row.Field<int>("Age") > 50).ToArray<DataRow>(); 

DataRow[] StdSelect = Dt.Select("Age > 50"); 

// all three requests will result you DataRows containing Babar, Bahar, Cable 
+0

son ne fonctionne pas –

Questions connexes