Метод Datatable Select()

У меня есть Datagridview, а Data Source - dtCustomer Я просто хочу отфильтровать содержимое сетки на основе текста поиска.  Истировал следующий код

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

Но это не работает. Если какой-либо орган знает решение, поделитесь им.

Ответ 1

Попробуйте следующее:

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

И проверьте, нет ли места, которое нужно удалить, путем подрезания текста.

Ответ 2

Возвращаемое значение для DataTable.Select - это массив DataRow []. Он возвращает список соответствующих DataRows. В настоящий момент ваш код ничего не делает с этими строками.

Вы можете настроить DataView фильтр и установить в DataView источник данных сетки:

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

Ответ 3

Вы можете попробовать использовать DataView (код не протестирован) -

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

Ответ 4

Или попробуйте это;

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

Ответ 5

DataTable.Select возвращает массив строки, но вы привязываете целую таблицу данных, а не отфильтрованные строки. используйте этот способ или DataView

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

Ответ 6

Вы можете сделать что-то вроде этого.

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

Ответ 7

Я думаю, что это то, что вы ищете?

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


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

И когда вы хотите вернуться к исходным данным

grvCustomer.DataSource = dtCustomer;

Ответ 8

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