#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;