首页 文章

Telerik RadGrid CustomSorting没有命中数据库?

提问于
浏览
1

我试图在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 回答

  • 0

    您可以在objectDatasource的OnSelecting事件中设置sortExpression,并在SelectMethod中使用它 .

    protected void odsGridData_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
       e.InputParameters["filterExpression"] = grdMyTasks.MasterTableView.FilterExpression;
       //Set the Sort Expression and use this in the Get method
       e.InputParameters["sortExpression"] = grdMyTasks.MasterTableView.SortExpressions.GetSortString();
       e.Arguments.StartRowIndex = grdMyTasks.CurrentPageIndex;
       e.Arguments.MaximumRows = grdMyTasks.PageSize;
    }
    

    这样,您可以执行自定义排序并将数据传递给RadGrid .

    希望这可以帮助 .

  • 0

    这是我使用的一些代码没有命中数据库的示例 . 我正在使用带有Razor视图引擎的MVC 3 . 注意 Ajax 绑定 . 不要忘记使用Telerik.Web.Mvc.UI添加并使用[GridResult]注释控制器中的"Post"方法,并返回GridModel以获取Json结果集 .

    using Telerik.Web.Mvc;
    
        [GridAction]
        public ActionResult AjaxGridSelect()
        {
            return View(new GridModel(db.lm_m_category));
        }
    

    这是index.cshtml(razor引擎),关键是Ajax绑定 .

    @model IEnumerable<LinkManagerAdmin.Dal.lm_r_category>  
     @using Telerik.Web.Mvc.UI
    
     @(Html.Telerik().Grid(Model)
        .Name("Grid")
        .DataKeys(keys => keys.Add(c => c.category_id ))
        .DataBinding(dataBinding => dataBinding.Ajax()
        .Select("AjaxGridSelect", "CategoryTree")
        .Insert("GridInsert", "CategoryTree", new { GridEditMode.PopUp, GridButtonType.ImageAndText })
        .Update("GridUpdate", "CategoryTree", new { GridEditMode.InLine, GridButtonType.ImageAndText })
        .Delete("GridDelete", "CategoryTree", new { GridEditMode.InLine, GridButtonType.ImageAndText }))
        .Columns(columns =>
        {
          columns.Bound(p => p.category_name).Width(150);
          columns.Bound(p => p.status_cd).Width(100);
          columns.Command(commands =>
          {
            commands.Edit().ButtonType(GridButtonType.ImageAndText);
            commands.Delete().ButtonType(GridButtonType.ImageAndText);
          }).Width(180).Title("Commands");
        })
       .Editable(editing => editing.Mode(GridEditMode.InLine))
       .Pageable(paging => paging.PageSize(50)
       .Style(GridPagerStyles.NextPreviousAndNumeric)
       .Position(GridPagerPosition.Bottom))
       .Sortable(o => o.OrderBy(sortcol => 
       {
                    sortcol.Add(a => a.category_name);
                    sortcol.Add(a => a.add_date);
       })
       .Filterable()
       .Groupable()
       .Selectable())
    

相关问题