我正在尝试做什么: -
索引页面会显示所述类别的下拉列表,选择1然后提交,重定向到telerik网格页面,所有记录都保存在所选类别的大表中。
所以例如宠物商店,商店在下一页下载哪种类型的宠物的网格下载了一个网格,其中包含了商店现有的所有类型的宠物。
已将日期过滤器排序,因为它已应用于数据绑定。
数据库是通过edmx连接的,它有2个没有关系的表,但是有一个类别/宠物表,它详细介绍了每个类别/宠物,然后有一个记录表,其中有一个类别/宠物列其中2个表具有单个字段incommon。
我一直试图通过使用ViewData来完成这项工作,ViewData对于下拉列表非常合适<%:Html.DropDownList(“category”,(SelectList)ViewData [“CategoryList”])%>但无法在下一页填充网格。
所以有点像http://demos.telerik.com/aspnet-mvc/grid/selectionserverside,但如果可能的话,有一个下拉菜单和2页。
答案 0 :(得分:4)
我遇到了同样的事情,所以我只使用jQuery来获取每个页面的数据(将#category替换为你的类别下拉列表的ID):
function onDataBinding(e) {
showWaitDialog();
var grid = $('#Grid').data('tGrid');
var args = 'page=' + e.page + '&category' + $('#category').val();
$.ajax({
url: "/Search/AjaxBinding/",
type: "POST",
data: args,
dataType: "json",
success: function (data) {
grid.total = data.total;
grid.dataBind(data.data);
hideWaitDialog();
}
});
}
将其添加到网格代码中:
.ClientEvents(x => x.OnDataBinding("onDataBinding"))
控制器代码:
[GridAction(EnableCustomBinding = true)]
public ActionResult AjaxBinding(int page, int category)
{
var searchResultsViewModel = //Code to get search results
return View(new GridModel
{
Data = searchResultsViewModel.SearchResults,
Total = searchResultsViewModel.TotalCount
});
}
将类别传回,并在将结果放入网格之前过滤结果。
答案 1 :(得分:1)
来自文档。
Telerik Grid for ASP.NET MVC正在使用其内置的基于Linq的表达式引擎来执行网格操作 - 分页,排序和过滤。但是在某些情况下,开发人员可能希望绕过表达式引擎和页面,自行排序或过滤网格数据。这称为“自定义绑定”。
继承人的链接:
http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-grid-data-binding-custom-binding.html
根据例子;如果这是您加载页面的控制器:
[GridAction]
public ActionResult Index(GridCommand command)
{
IEnumerable<Order> data = GetData(command);
var dataContext = new NorthwindDataContext();
//Required for pager configuration
ViewData["total"] = dataContext.Orders.Count();
return View(data);
}
然后你的帖子将会是一个你可以过滤它的地方:
[GridAction]
[HttpPost]
public ActionResult Index(GridCommand command)
{
desiredCategory = this.myDropDownList.SelectedCategory.ToString();
//Change the query here using post back variables
IEnumerable<Order> data = GetData(command);
data = from x in data.[entity name]
where x.category = desiredCategory
select x;
var dataContext = new NorthwindDataContext();
//Required for pager configuration
ViewData["total"] = dataContext.Orders.Count();
return View(data);
}
答案 2 :(得分:0)
我可以在没有任何代码的情况下给出一些指示(我的MVC有点生疏,我没时间编写样本代码)。
所以基本上你有一个下拉列表页面,然后是网格所在的另一个页面。 你需要的是:
HTH