2009-04-30 3 views
38

私は、SQLのテーブルからバインドするdatagridviewを持っています。そのdvには、Id、Name、Priceという属性があります。名前列のSortModeを自動に設定し、この列のヘッダーをクリックすると、名前の最初の文字に基づいてこのDVを並べ替えることができます。この方法では、最初の文字(Acumulator、Boat、コカコーラ、エンジンなど)。C#でdataGridView列をソートしますか? (Windows Form)

列名のヘッダーをクリックせずにこのようなことが起こるかどうかを確認します。私はフォームが読み込まれるときにこの仕事をするいくつかのコードを探しています。

+1

回答は次の通りであった: this.dataGridView1.Sort(this.dataGridView1.Columns [ "名前"]、ListSortDirection.Ascending)。 – AXheladini

答えて

82

"ソート" と呼ばれるのDataGridViewの方法があります:

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending); 

これは、プログラムであなたのDataGridViewをソートします。

+0

ソートに費やされた時間はどうでしたか?バインド後でないSQL文を実行するときには何を注文すればいいのでしょうか?もっと時間を費やすと思います。 – Ahmy

+0

はい、アーマミーは正しく、パフォーマンス面でデータベース側でソートする方が良いでしょう。したがって、SQLを使用してDBと直接対話する場合は、クエリの最後にオーダーを追加します。私は単にその質問に答えるだけだった。これはコード内のDGVをソートする方法です。 – BFree

+0

もしAXheladiniがそれを必要とするなら、それは大丈夫だが彼の質問から私はUIでそれを必要としないことを理解していたので、私は時間を節約したいと思っていたので、AXheladiniが解決策を見つけ出し、 – Ahmy

0

Datatable.Default.Sortプロパティを使用して、それをDataGridviewにバインドします。

3

あなたはデータを制御することができますが、データを注文して、SQLデータベースから返される返さ:

orderby [Name] 

、あなたのアプリケーションからのSQLクエリを実行すると、データが返さ注文します。たとえば、プロシージャをコールする関数を作成するか、SQLを実行して、orderby条件を取得するパラメータを与えます。データベースから返されたデータを注文した場合は、時間を消費しますが、実行時に順序付けしたいUIからではなく、SQLを実行するときに注文するように注文したとします。クエリ。

+0

私はdatagridview automaticlly私はクエリを使用しないバインドしています。 データソースのクエリにアクセスしてこれを修正する方法はありますか? – AXheladini

+0

私は、データベースを照会してデータを返すSQLステートメントが、プロシージャーでorderbyを使用するか、DALレイヤーのSQLステートメントに追加することを意味します。 – Ahmy

8
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending); 
+1

私は、数値インデックスを文字列インデックスよりも良く使うことに同意します。将来、列名を変更すると、文字列インデックスも変更する必要があります。 – 123iamking

1

この1つはsimplierある:)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview; 
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC"; 
this.datagridview.datasource = dataview1;