2010-07-29 4 views

Répondre

29

Voulez-vous dire comme ça ?:

dtData.Select("ID=1 AND ID2=3"); 
12

Ok, voici comment je fais ces choses ...

GridFieldDAO dao = new GridFieldDAO(); 
    //Load My DataTable 
    DataTable dt = dao.getDT(); 
    //Get My rows based off selection criteria 
    DataRow[] drs = dt.Select("(detailID = 1) AND (detailTypeID = 2)"); 
    //make a new "results" datatable via clone to keep structure 
    DataTable dt2 = dt.Clone(); 
    //Import the Rows 
    foreach (DataRow d in drs) 
    { 
     dt2.ImportRow(d); 
    } 
    //Bind to my new DataTable and it will only show rows based off selection 
    //criteria 
    myGrid.DataSource = dt2; 
    myGrid.DataBind(); 

Avis dans ma sélection() Je mets les critères dans parens entre ET et OU

Espérons que cela aide! Mike V

+3

Ceci est une meilleure solution que de jeter un ' DataRow [] 'autour. Si votre filtre ne renvoie aucune ligne et que vous avez besoin du schéma quelque part dans votre code, vous ne l'obtiendrez pas à partir d'un tableau vide! –

+0

Quel espace de noms a GridFieldDAO? ou n'est-ce pas disponible pour winforms? – PandaNL

5

Mieux utiliser ceci:

GridFieldDAO dao = new GridFieldDAO(); 
//Load My DataTable 
DataTable dt = dao.getDT(); 
//Get My rows based off selection criteria and copy them directly to datatable 
DataTable dt2 = dt.Select("(detailID = 1) AND (detailTypeID = 2)").CopyToDataTable(); 
+0

CopyToDataTable n'est pas défini. J'ai raté quelque chose? – Ciupaz

+1

C'est une méthode d'extension. Vous devez ajouter une référence à System.Data.DataSetExtensions http://msdn.microsoft.com/en-us/library/bb396189(v=vs.110).aspx – qlayer

0

excellent exemple et très utile. Je voulais ajouter une chose - si vous devez sélectionner sur une utilisation de chaîne quelque chose comme:

DataTable dt2 = dt.Select("state = 'FL' "); 
+1

Erreur: Impossible de convertir le type 'System.Data. DataRow [] 'à' System.Data.DataTable ' – kleineg

1
DataTable dt2 = dt.Select("ID = 1").CopyToDataTable; 

assurez-vous que dt a des lignes dans ce

1
DataTable dt2 = dt.Select("state = 'FL' ").CopyToDataTable; 
+0

Vous devez ajouter plus de détails à votre réponse, expliquer aux autres pourquoi cela fonctionne. – pix

Questions connexes