2012-04-30 16 views
2

私はDataGridViewComboBoxColumnで、実際の値はIDに結びついていますが、DisplayMemberはルックアップテーブルの文字列です。私はその列で並べ替えると並べ替えがではなくDisplayMemberに基づいて行われるようにしています。私はこれがthis questionで対処されたことを知っていますが、答えは深くないし、理解もしませんでした。Column.DisplayMemberでDataGridViewを並べ替える

私は、このように試してみた何これまで

  • SortCompareイベントへの結合が、それはデータバインドされた列に解雇されていません発見しました。
  • ColumnHeaderMouseClickイベントではなく、DataGridViewRowCollectionの行を手動でソートするのは読み取り専用で、データバインドされたコレクションにプログラムで行を挿入(スワップ)することはできません。
  • 非表示のDataGridViewTextBoxColumnを作成すると、元の列のDisplayMemberにセルが自動的に設定され、代わりにその列がソートされます。ただし、データバインドされたコレクションは、無制限の列に基づいてソートすることはできません。

編集:はさらに明確にする:私は、コンボボックス自体をソートしていない、コンボボックスのDisplayMemberに基づいて全体DataGridViewを整理しようとしています。

DisplayMemberのデータバインドDataGridViewComboBoxColumnに基づいてDataGridViewをソートするにはどうすればよいですか?

+0

テーブル自体を照会するときにソートできますか? SQLの仕事をするようにSQLに頼みますか? – nawfal

+0

おそらく?私は使用しなければならないSQL文を知っていますが、DataGridViewで直接SQLを呼び出す方法がわかりません。 –

+0

あなたはdgvをデータテーブルなどにバインドしていませんか?その場合、どのようにデータテーブルを作成していますか?私は基礎となるデータベースから値を得ていると思います。 – nawfal

答えて

2

あなたの3番目の試みはほぼ正しいです:必要なのは、DisplayMemberの値を格納するためにDataSetに余分な列を作成することです。次に、不可視バインドのDataGridViewColumnを作成し、この余分なDataSet列にバインドします。次に、それはバインドされた列であり、によってプログラム上で並べ替えることができます。

あなたがリンクしている質問は同じですが、アプリケーションに返される前に、SQLで表示メンバーテキストを生成しているソリューションだけです。

これは簡単だと思いますよね? :)

関連する問題