3

.net WinFormで、DataSetにバインドされたDevExpressのGridControl / GridViewで、デフォルトの並べ替え順序を指定するにはどうすればよいですか?SortOrderで表示されるGridColumnがない場合に使用されるもの。

デフォルトでは、非表示のDateTimeStampGridColumnのビューに並べ替えを設定しています。もちろん、ユーザーが列をクリックすると、ユーザーによって上書きされます。ユーザーは、列のメニューを使用するか、Ctrlキーを押しながら列をクリックすることで「並べ替えをクリア」できます。その場合、行はDateTimeStampで並べ替えたいのですが、行はもう(またはPKで並べ替えられませんか?)並べ替えられません。

何か案が?たぶん、ユーザーが「ソートをクリア」したときに通知されるコードをプラグインすることによって?GridView.PopupMenuShowingとGridStringId.MenuColumnClearSortingで遊んで、ユーザーがメニューをクリックした場合を処理できます。ただし、Control+クリックの場合は処理しません。

誰かが同じ問題に遭遇し、(単純な)解決策を見つけましたか?

4

5 に答える 5

2

私があなたなら、必要な列に基づいてグリッドのデータソースを並べ替えます。この場合、エンドユーザーがgridViewの並べ替え条件をクリアすると、データソースで指定された順序でデータが表示されます。

ここでの更新 はあなたのために働くはずのコードです:

DataView dv = yourDataTable.DefaultView;
dv.Sort = "SomeField";
gridControl.DataSource = dv;

また、次のMSDNの記事も参照してください。

DataView.Sortプロパティ

于 2011-05-06T10:52:03.883 に答える
1

エンドユーザーの並べ替えを無効にするのが最も簡単ではないでしょうか。または、私はあなたの問題を誤解しましたか?つまり、デフォルトの並べ替えの後にそれらの並べ替えを適用しますか?

于 2011-05-05T19:10:03.353 に答える
1

InitializeComponent();これをコンストラクターに置いてください

GridView1.Columns["FieldName"].SortOrder = ColumnSortOrder.Ascending;
于 2015-01-13T16:48:29.813 に答える
0

イベントにイベントハンドラーを追加GridView.EndSortingし、そのハンドラーに。を持つ列があるかどうかを確認できますSortIndex >= 0。ない場合は、独自の並べ替えを設定できます。

于 2011-05-05T17:09:56.873 に答える
-3

GridControl.SortBy(DateTimeStampColumn、ColumnSortOrder.Descending);

于 2013-05-16T09:51:01.990 に答える