C#でdataGridView列をソートしますか? (Windowsフォーム)
-
03-07-2019 - |
質問
SQLテーブルからバインドするdatagridviewがあり、dv iにはId、Name、Priceという属性があります。 Name ColumnsのSortModeをAutomaticに設定し、この列のヘッダーをクリックすると、Nameの最初の文字に基づいてこのdvを並べ替えることができます。これにより、最初の文字(Acumulator、Boat、コカコーラ、エンジンなど)。
[名前]列のヘッダーをクリックせずにこのことを行う方法はありますか。フォームがロードされるときにこの仕事をするコードを探しています。
解決
DataGridViewには" Sort"というメソッドがあります:
this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending);
これにより、プログラムでデータグリッドビューがソートされます。
他のヒント
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending);
返されるデータを順序付けることで、SQLデータベースから返されるデータを制御できます。
orderby [Name]
アプリケーションからSQLクエリを実行する場合、返されるデータを並べ替えます。たとえば、プロシージャを呼び出す関数またはSQLを実行する関数を作成し、orderby基準を取得するパラメーターを指定します。データベースから返されたデータを注文した場合、時間を消費しますが、UIではなく注文したいというように実行されているため、実行時に注文するので、SQLを実行するときに注文しますクエリ。
これは簡単です:)
dataview dataview1;
this.dataview1= dataset.tables[0].defaultview;
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC";
this.datagridview.datasource = dataview1;
Datatable.Default.Sort
プロパティを使用して、それをdatagridviewにバインドします。
これを行う最良の方法は、データソースをバインドする前にリストをソートすることです。
cars = cars.OrderBy(o => o.year).ThenBy(o => o.color).ToList();
adgCars.DataSource = cars;
悪い英語でごめんなさい。