2011-10-20 12 views
11

Tengo un Datagridview y el Data Source es dtCustomer Solo quiero filtrar el contenido de la vista de cuadrícula en función de un texto de búsqueda. Itried el siguiente códigoDatatable Select() Método

DataTable dtSearch = dtCustomer; 
dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'"); 
grvCustomer.DataSource = dtSearch; 

Pero esto no está funcionando. Si algún cuerpo conoce la solución, comparta.

Respuesta

11

Prueba esto:

dtSearch.DefaultView.RowFilter = "cust_Name like '" + txtSearch.Text + "%'"; 

y comprobar todo lo que hay espacio para ser eliminado por triming el texto.

3

Usted podría tratar de usar un DataView (código no probado) -

DataView dv = new DataView(dtSearch); 
dv.RowFilter = "cust_Name like '" + txtSearch.Text + "%'"; 
grvCustomer.DataSource = dv; 
8

El valor de retorno para DataTable.Select es un [] array DataRow. Devuelve una lista de DataRows coincidentes. Su código no hace nada con esas filas en este momento.

Es posible configurar una DataView con un filtro y del origen de datos de la red a la DataView:

DataView dv = new DataView(dtSearch); 
dv.RowFilter = "..."; 
grvCustomer.DataSource = dv; 
1

DataTable.Select vuelve gama de fila, pero que son vinculantes para toda la tabla de datos no filtrados filas. use de esta manera o DataView

DataTable dtSearch = dtCustomer; 
var filter = dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'"); 
grvCustomer.DataSource = filter.ToList(); 
2

O Pruebe esto;

dataGridView.Datasource = datatable.Select("....").CopyToDataTable() 
0

Creo que esto es lo que estás buscando?

//DataTable dtSearch = dtCustomer; 
//dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'"); 


grvCustomer.DataSource = dtCustomer.Select("cust_Name like '" + txtSearch.Text + "%'"); 

Y cuando se quiere volver a los datos originales

grvCustomer.DataSource = dtCustomer; 
-1
dtCustomer.Rows.Cast<DataRow>().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList() 
1

Usted puede hacer algo como esto.

DataView dv1 = dtDefault.DefaultView; 
dv1.RowFilter = "CusGroupId=1 and CustomerCode LIKE '"+txtCustomer.Text +"%'"; 
DataTable dt=dv1.ToTable();