我正在大量使用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?
答案 0 :(得分: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);
}