0

我正在从 ASP.NET GridView 移植到 DevExpress AspxGridView,并且使用相同的 ObjectDataSource,但是现在当我单击标题时它会抛出:

“数据源‘xxx’不支持使用 IEnumerable 数据排序。自动排序仅支持 DataView、DataTable 和 DataSet。”

但这对 GridView 来说效果很好,所以我怀疑这真的是 'xxx' 的错。在旧的 gridview 分页上,排序很好。现在分页仍然有效(当我使用“DataSourceForceStandardPaging”时)。

如何使它与 AspxGridView 一起工作?

4

1 回答 1

1

您可以使用自定义规则实现 ASPxGridView 排序,需要将列的Settings.SortMode属性设置为“ Custom”并处理ASPxGridView.CustomColumnSort事件(如相应主题所示)。但是,不应禁用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 和实体框架以及 ObjectDataSource 的性能比较

绑定大数据:
绑定到数据
绑定到大数据(数据库服务器模式)
IListServer 接口的可能实现,以实现服务器模式功能

于 2013-09-11T06:53:29.903 回答