我试图在Telerik论坛上发帖,但现在每次我尝试打开我的帖子时,我都会“哎呀......看来我们的服务器出现了问题 . ”所以我在这里发布了这个问题 .
我是Telerik和RadGrid的新手 . 我正在尝试修改现有项目,因为客户端需要自定义排序 . 有一个数据字段可能包含数字或文本,因此它是一个字符串类型,但有时它必须按数字排序 . 所以我去了这个链接:
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/sort/defaultcs.aspx
和http://www.telerik.com/help/aspnet-ajax/grdapplycustomsortcriteria.html
这个例子说:
“打开自定义排序后,RadGrid将显示排序图标,但实际上不会对数据进行排序 . ”但似乎仅仅添加AllowCustomSorting来禁用默认排序是不够的 .
在实现SortCommand时,我注意到我必须做e.Canceled = true;
因为发生了默认排序 . 为什么在文档和示例中没有提到这一点?
但主要问题是 - 在SortCommand内部,我的RadGrid已经加载了所有项目 . 那么有没有办法对它们进行排序以避免命中数据库?我尝试访问“对象源,GridSortCommandEventArgs e”的各种Items属性,但所有Items都是只读的,所以我无法对它们进行排序并附加回RadGrid .
谢谢你的任何想法 .
2 回答
您可以在objectDatasource的OnSelecting事件中设置sortExpression,并在SelectMethod中使用它 .
这样,您可以执行自定义排序并将数据传递给RadGrid .
希望这可以帮助 .
这是我使用的一些代码没有命中数据库的示例 . 我正在使用带有Razor视图引擎的MVC 3 . 注意 Ajax 绑定 . 不要忘记使用Telerik.Web.Mvc.UI添加并使用[GridResult]注释控制器中的"Post"方法,并返回GridModel以获取Json结果集 .
这是index.cshtml(razor引擎),关键是Ajax绑定 .