2009-06-08 9 views
10

WindowsフォームでDataGridViewを使用しています。 2つの列だけが表示されます。デフォルトでは、アプリケーションが実行されているときに、列見出しをクリックすると、その列に基づいてdatagridviewがソートされます。しかし、私は完全にグリッドビューでソートを無効にしたい。私は並べ替え= falseなどのプロパティを見つけることができませんでした。データグリッドビューの並べ替えを防止する方法

誰でもグリッド表示の並べ替えを無効にする方法を教えてください。

感謝:)

EDIT:

はちょうど私がNotSortable(下記掲載の回答)として、個々の列を設定することができます考え出しました。個々の列ではなく、グリッドビューレベルで行うことはできますか?

答えて

17

いいえ、答えが見つかりました。

:各列のために私は明示的に

this.dgv.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable; 

だから私は

/// <summary> 
/// Sets the sort mode for the data grid view by setting the sort mode of individual columns 
/// </summary> 
/// <param name="dgv">Data Grid View</param> 
/// <param name="sortMode">Sort node of type DataGridViewColumnSortMode</param> 
public static void SetGridViewSortState(DataGridView dgv, DataGridViewColumnSortMode sortMode) 
{ 
    foreach (DataGridViewColumn col in dgv.Columns) 
     col.SortMode = sortMode; 
} 

ヘルパークラスで私自身の機能を書いて、私はグリッドビューはunsortableにするために必要な場所、私はこのようにそれを呼び出すを指定する必要があります

Helper.SetGridViewSortState(this.dgv, DataGridViewColumnSortMode.NotSortable); 
+0

というプロパティがあります。これを拡張メソッドにして、これを以下のように呼び出すことができます: 'dgv.SetGridViewSortState(DataGridViewColumnSortMode.NotSortable);' –

+0

Cool!私は解決があなたを助けてうれしいです:) –

-1

あなたはいつでも列ヘッダーのクリックイベントとダブルクリックイベントを処理でき、何もしません。

+0

私は試しましたが、それはまだ並べ替えます。 –

3
For i = 0 To DataGridView1.Columns.Count - 1 
    DataGridView1.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Programmatic 
Next i 

web gridviewには、AllowSortingというプロパティがあります。これははるかに簡単です!

+0

はい、最終的には私がやっていることです。しかし、それは依然として列レベルであり、グリッドレベルではありません。 –

+0

クール! VB.NETで動作する、なぜ私はこれにupvoteがないのだろうかと思う。 –

2

ソートは、一部はデータソースの機能です。この場合のデータソースとは何ですか? DataTable、おそらく? 1つの選択肢は、並べ替えをサポートしていないデータソースを使用することです。これはほぼすべてです。 List<T>BindingList<T>など - ソートは行われません。

あなたがDataViewを使用する必要がある場合、あなたは(私は推測)IBindingListSupportsSortingためfalseを返す)、単に列ごとに値を変更し、実装を再カスタムビューとビューをラップする可能性がに(たくさん簡単ですそれはクレイジーは他に何もするだろうポイント...).NET 3.0で見つめ

-1

は、GridViewのは、これがうまく動作AllowSorting