2010-07-29 10 views

Respuesta

29

¿Quieres decir como esto ?:

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

bien, aquí es cómo lo hago esas cosas ...

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

Aviso en mi Seleccione() que puso a los criterios de parens entre Y y O

Espero que esto ayude! Mike V

+3

Esta es una solución mejor que lanzar una ' DataRow [] 'alrededor. Si su filtro no devuelve ninguna fila, y necesita el esquema en algún lugar profundo de su código, ¡no lo obtendrá de una matriz vacía! –

+0

¿Qué espacio de nombres tiene GridFieldDAO? o no está disponible para winforms? – PandaNL

5

Mejor uso esto:

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 no está definido. Me he perdido algo? – Ciupaz

+1

Es un método de extensión. Debe agregar una referencia a System.Data.DataSetExtensions http://msdn.microsoft.com/en-us/library/bb396189(v=vs.110).aspx – qlayer

0

gran ejemplo y muy útil. Quería añadir una cosa - si necesita seleccionar en una utilización cadena como:

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

Error: No se puede convertir implícitamente el tipo 'System.Data'. DataRow [] 'a' System.Data.DataTable ' – kleineg

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

asegurarse dt tiene filas en ella

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

Debe agregar más detalles a su respuesta, explicar a los demás por qué está funcionando. – pix

Cuestiones relacionadas