2017-01-29 5 views
0

私はそうのような数値のみを含む列と呼ばれるコピー数を持っている:範囲間のデータグリッドビューの行をフィルタリングする方法は?

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:コードで回答がはるかに高く評価されます!あなたはそこに情報に基づいて記事に"BindingSource.Filter Property" on MSDN

を掘ってみてください

+1

かなりの量の情報を除外しました。データはどのようにコントロールに入りましたか?それは結ばれていますか?何を試しましたか? – Plutonix

+0

DGVがデータソースにバインドされている場合は、DGVとそのデータソースの間に「BindingSource」を挿入し、BindingSourceの「Filter」プロパティを使用します。 – Graffito

+0

フィルター文字列には何が含まれていますか...それは私が必要なものですか? – Joseph

答えて

1

、私はあなたのコードにこれをやってみたい:

// 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 Property](https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.filter(v = 110).aspx)?私は上記の私の答えを適応/編集しようとします。 –

+0

@Joseph - 番号の範囲を変更したい場合は、次のようなものを使用できます: '' 'bindingSource.Filter = String.Format(" [コピー数]> = {0} AND [コピー「number1」と「number2」は、スライダや他のユーザ入力を介して割り当てることができる変数ですか? C#バージョン以上を使用している場合は、[string interpolation](https://msdn.microsoft.com/nl-be/library/dn961160.aspx)を使用してください: '' 'bindingSource.Filter = $" [copy number ]> = {number1} AND [copy number] <= {number2} ";' '' –

関連する問題