2013-02-14 62 views
1

我正在使用Telerik MVC控件,尤其是Grid和Tab條。上的「客戶編輯」畫面,我有一個標籤條,如以下:Telerik MVC網格分頁查詢字符串參數

@(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嗎?

回答

0

如果你仍然有這個問題,你可以在後臺綁定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); 
     } 
相關問題