我正在使用WebGrid,该WebGrid绑定到包含关于传递信息的对象列表。我希望能够使用包含Customers的DropDownList过滤所述WebGrid。当我在DropDownList中选择一个Customer时,change-method会发送一个Ajax调用,该调用应该为WebGrid获取新项目。在MVC4中使用DropDownList过滤WebGrid
通话成功,但没有任何反应。 WebGrid根本不会改变。我甚至尝试发送与排序列表时发送的Ajax调用相同的Ajax调用。但没有任何反应。
我在这里做错了什么?
视图模型:
public class DeliveriesViewModel : PageViewModel<DeliveriesPage>
{
public DeliveriesViewModel(DeliveriesPage currentPage) : base(currentPage)
{
DeliveryItems = new List<DeliveryItem>();
}
public List<DeliveryItem> DeliveryItems { get; set; }
public List<SelectListItem> Customers { get; set; }
}
控制器:
public ActionResult Index(DeliveriesPage currentPage, string customer)
{
var model = new DeliveriesViewModel(currentPage);
model.Customers = _deliveryService.GetCustomers();
model.DeliveryItems = customer == null ? _deliveryService.GetDeliveryItems() : _deliveryService.GetDeliveryItems(customer);
return View(model);
}
检视:
@model DeliveriesViewModel
<h1>@Model.CurrentPage.PageName</h1>
@Html.DropDownList("customerDropDown", Model.Customers)
@Html.Partial("_grid", Model)
<script type="text/javascript">
$("#customerDropDown").change(function() {
$.get("?Customer="+$("#customerDropDown").val());
});
</script>
_grid局部视图:
@model DeliveriesViewModel
@{
var grid = new WebGrid(Model.DeliveryItems, canPage:true, canSort: true, ajaxUpdateContainerId:"container-grid");
}
<div id="container-grid">
@grid.GetHtml(
columns: grid.Columns(
grid.Column("DeliveryId"),
grid.Column("CustomerName"),
grid.Column("ShipNumber"),
grid.Column("ShipName"),
grid.Column("Product"),
grid.Column("PlannedWeight"),
grid.Column("TotalWeight"),
grid.Column("ShipStatus"),
grid.Column("TransportTo"),
grid.Column("TransportFrom"),
grid.Column("RevDate"),
grid.Column("ShipStemDept"),
grid.Column("ShipRealDept"),
grid.Column("ShipStemArr"),
grid.Column("ShipRealArr"),
grid.Column("TranspMonth"),
grid.Column("TranspYear")
))
</div>
好吧,现在我觉得很愚蠢。谢谢;) – Naning 2013-03-08 07:44:20