2017-01-29 21 views
0

У меня есть столбец называется число копий, которое содержит только цифры следующим образом:Как фильтровать строки datagridview между диапазоном?

copy number 
1 
33 
12 
40 
100 

как я могу получить строки между и диапазона, который в данном примере являются строками (33, 12, 40)?

мои данные из базы данных MySQL и GridView заполняется следующим образом:

MySqlDataAdapter a = new MySqlDataAdapter(query, conn) 
DataTable t = new DataTable(); 
a.Fill(t); 
dataGridView1.DataSource = t; 

PS: ответы в коде будут оценены!

+1

Вы оставили исчерпывающую информацию: как данные попали в управление? Это связано? Что вы пробовали? – Plutonix

+0

Если ваш DGV привязан к источнику данных, вставьте «BindingSource» между DGV и его источником данных, а затем используйте свойство «Filter» для BindingSource. – Graffito

+0

что будет содержать строку фильтра ... это то, что мне нужно? – Joseph

ответ

1

Вы могли бы попытаться копаться в статье "BindingSource.Filter Property" on MSDN

Основываясь на информации, там, я стараюсь делать это в ваш код:

// your original starter code 
MySqlDataAdapter a = new MySqlDataAdapter(query, conn) 
DataTable t = new DataTable(); 
a.Fill(t); 

// Create a seperate bindingsource object you can control 
var bindingSource = new BindingSource(); 
bindingSource.DataSource = t; 

// Now sort on a column 
bindingSource.Filter = "[copy number] >= 1 AND [copy number] <= 100"; 

// Assign that bindingsource object to the dgv 
dataGridView1.DataSource = bindingSource; 

Вы можете изменить имя столбца copy number к чему-то как cn или copy_number, я добавил скобки [] вокруг этого здесь, так как это the way you can overcome it.

+1

Мне жаль разочаровывать вас, но мне не нужна сортировка. Что мне нужно - это способ получить строки на основе определенного диапазона (мин, макс.). – Joseph

+0

мой плохой - читайте слишком быстро .. вы изучили [Свойство BindingSource.Filter] (https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.filter (v = vs. 110) .aspx)? Я попытаюсь адаптировать/изменить свой ответ выше. –

+0

@Joseph - забыл упомянуть - если вы хотите изменить диапазон чисел, вы можете использовать что-то вроде этого: '' 'bindingSource.Filter = String.Format (" [копировать номер]> = {0} И [копировать номер] <= {1} ", number1, number2);' '' - где, где 'number1' и' number2' - переменные, которые вы можете назначить с помощью ползунка или любого другого пользовательского ввода? Или используйте [интерполяцию строк] (https://msdn.microsoft.com/nl-be/library/dn961160.aspx), если вы используете версию C# + или выше: '' 'bindingSource.Filter = $ [копировать номер ]> = {number1} И [номер копии] <= {number2} ";' '' –