0

ASP.NET GridView から DevExpress AspxGridView に移植しています。同じ ObjectDataSource を使用していますが、ヘッダーをクリックすると次のようにスローされます。

「データ ソース 'xxx' は、IEnumerable データの並べ替えをサポートしていません。自動並べ替えは、DataView、DataTable、および DataSet でのみサポートされています。」

しかし、これは GridView ではうまく機能したので、本当に 'xxx' のせいだとは思えません。古いグリッドビューのページングでは、並べ替えは問題ありませんでした。現在、ページングは​​引き続き機能します (「DataSourceForceStandardPaging」を使用する場合)。

AspxGridView で動作させるにはどうすればよいですか?

4

1 に答える 1

1

カスタム ルールを使用して ASPxGridView の並べ替えを実装できます。列のSettings.SortModeプロパティを " " に設定し、 ASPxGridView.CustomColumnSortCustomイベントを処理する必要があります (対応するトピックで説明されています)。ただし、Settings.AllowSortオプションは無効にしないでください。

カスタムソートの例:

RepositoryItemHyperLinkEdit hlnkEditor;
private void GridCustomSortTest_Load(object sender, EventArgs e)
{
    string[] months = new string[] { "January", "February", "March", 
        "April", "May", "June", "July", "August", "September", 
        "October", "November", "December" };
    hlnkEditor = new RepositoryItemHyperLinkEdit();
    //hlnkEditor.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;

    grid.DataSource = months;
    grid.RefreshDataSource();
    gridView1.Columns[0].SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
    gridView1.Columns[0].ColumnEdit = hlnkEditor;
    gridView1.CustomColumnSort += new DevExpress.XtraGrid.Views.Base.CustomColumnSortEventHandler(gridView1_CustomColumnSort);


}

void gridView1_CustomColumnSort(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnSortEventArgs e)
{
    e.Result = Comparer<int>.Default.Compare(e.ListSourceRowIndex1,
       e.ListSourceRowIndex2);

    e.Handled = true;
}

この助けを願っています..

編集: サーバー側の並べ替えとページングについては、例を参照してください - EnablePagingを使用してグリッドを ObjectDataSource にバインドし、リンクも参照してください。

その他の参考資料:
サーバー上で ObjectDataSource をソートするグリッドを取得するにはどうすればよいですか?
Gridview ページング/並べ替え/グループ化/フィルタリング式をビジネス ロジックに渡す メソッドの選択
ASPxGridView - ObjectDataSource ページングとフィルタリング
XPO と Entity Framework、および ObjectDataSource のパフォーマンス比較

大規模データのバインド:
データ
へのバインド 大規模データへのバインド (データベース サーバー モード)
サーバー モード機能を実現するための IListServer インターフェイスの実装の可能性

于 2013-09-11T06:53:29.903 に答える