Метод выбора данных ()

#c# #winforms #datagridview #datatable

#c# #winforms #datagridview #datatable

Вопрос:

У меня есть 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[]. Он возвращает список совпадающих потоков данных. На данный момент ваш код ничего не делает с этими строками.

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

 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:

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

Ответ №6:

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

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

Ответ №7:

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

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

Ответ №8:

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

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


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

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

 grvCustomer.DataSource = dtCustomer;