Telerik MVC Grid пейджинг Параметры строки запроса

Я активно использую элементы управления 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-адресу подкачки?


person Matt Millican    schedule 14.02.2013    source источник


Ответы (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);
        }
person VinnyG    schedule 07.05.2013