【问题标题】:Telerik MVC Grid paging Querystring ParametersTelerik MVC 网格分页查询字符串参数
【发布时间】:2013-01-30 10:39:36
【问题描述】:

我大量使用 Telerik MVC 控件,特别是 Grid 和 Tab 条。在“客户编辑”屏幕上,我有一个标签条,如下所示:

@(Html.Telerik().TabStrip()
       .Name("customer-info")
       .Items(tabs =>
       {
           tabs.Add().Text("Addresses").Content(Addresses().ToHtmlString());
           tabs.Add().Text("Phone / Email").Content(PhoneNumbers().ToHtmlString());
           tabs.Add().Text("Card Numbers").Content(CardNumbers().ToHtmlString());
           tabs.Add().Text("Adjustments").Content(Adjustments().ToHtmlString()).Visible(Model.UserCanAddAdjustments);
           tabs.Add().Text("Transactions").Content(Transactions().ToHtmlString());
           tabs.Add().Text("Account Info").Content(AccountInfo().ToHtmlString());
       })
       .SelectedIndex(currentTab))  

在“事务”选项卡中,我有一个网格,它现在正在使用 AJAX 绑定:

@(Html.Telerik().Grid<Transaction>()
.Name("transactions")
.DataBinding(bind => bind.Ajax().Select("AccountTransactionBinding", "Accounts", new { customerId = Model.CustomerId }))
.Columns(cols =>
    {
        cols.Bound(x => x.TransactionDate).Format("{0:d}").Title("Date").Width("10%");
        cols.Bound(x => x.Outlet.Name).Title("Outlet").Width("15%");
        cols.Bound(x => x.CheckNumber).Title("Check/Folio").Width("15%");
        cols.Bound(x => x.Type.Name).Title("Type").Width("15%");
        cols.Bound(x => x.CardNumber).Width("15%");
        cols.Bound(x => x.AmountSpent).Format("{0:c2}").Width("15%");
        cols.Bound(x => x.BasePoints).Title("Points").Width("15%");
    })
.Pageable(paging => paging.PageSize(15))
.Sortable(sort => sort.OrderBy(ob => ob.Add(x => x.TransactionDate).Descending()))
  .Filterable())

不幸的是,我需要在网格中添加一些额外的项目,这不会让我在 AJAX 绑定中这样做。我可以轻松地将其更改为服务器绑定,但我的问题是分页。这个网格可能有成百上千的项目,所以它需要分页。如果我只是使用“常规”方式分页,它可以工作,但它默认为每次页面加载时的第一个选项卡。

现在背景已经不碍事了,问题: 有没有办法将 QueryString 参数“附加”到分页 URL?

【问题讨论】:

    标签: asp.net-mvc-3 razor telerik telerik-grid


    【解决方案1】:

    如果你仍然有这个问题,你可以在后端绑定中获取 GridCommand 参数,这里有一些代码可以帮助做到这一点:

    [GridAction(EnableCustomBinding = true)]
            public virtual ActionResult ListCompanyAjax(GenericSearchModel searchModel, GridCommand command)
            {
                var data = _searchService.SearchCompany(searchModel);
    
                if (searchModel != null &&
                    !string.IsNullOrWhiteSpace(searchModel.Text))
                {
                    data = data.ToList().OrderByDescending(x => x.GetPower(searchModel.Text)).AsQueryable();
                }
                else if(command.SortDescriptors.Count == 0)
                    command.SortDescriptors.Add(new SortDescriptor{Member = "Name", SortDirection = ListSortDirection.Ascending});
    
                var results = data
                    .Select(x => new CompanyForListingModel
                        {
                            Id = x.Id,
                            Name = x.Name,
                            IsActive = x.IsActive,
                            IsNotActive = !x.IsActive,
                            Class = x.Type.Name
                        })
                    .ToGridModel(command.Page,
                                 command.PageSize,
                                 command.SortDescriptors,
                                 command.FilterDescriptors,
                                 command.GroupDescriptors);
    
                return View(results);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2015-11-19
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多