【发布时间】:2014-04-17 15:50:38
【问题描述】:
我正在尝试使用来自 ajax 调用的模型填充剑道网格。这是我的 Kendo Ui Grid,带有 .cshtml 中的 Html.Helpers
<div id="grid">
@(Html.Kendo().Grid<OtpadModel.AddressObject>()
.Name("Grid")
.Pageable()
.Sortable()
.Selectable(sel =>
{
sel.Mode(GridSelectionMode.Single);
})
.Filterable()
.Scrollable()
.Events(events => events.Change("onChange"))
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("GetAddressObjects", "AddressObject"))
.Model(model => model.Id(p => p.ID)))
.Columns(columns => {
columns.Bound(p => p.KeyNumber).Title("Šifra objekta");
columns.Bound(p => p.ObjectType.Type).Title("Vrsta objekta");
columns.Bound(p => p.ObjectOwners.FirstOrDefault().Owner.Name).Title("Ime vlasnika");
columns.Bound(p => p.ObjectOwners.FirstOrDefault().Owner.Surname).Title("Prezime vlasnika");
columns.Bound(p => p.Address.Street).Title("Ulica");
columns.Bound(p => p.Address.Number).Title("Broj");
columns.Bound(p => p.Address.City.Name).Title("Grad");
columns.Bound(p => p.ResidentalArea).Title("Površina");
columns.Bound(p => p.ResidentsNumber).Title("Članovi");
columns.Bound(p => p.TuristBedsNumber).Title("Turistički kreveti");
})
)
</div>
我的控制器方法实现是:
public ActionResult GetAddressObjects([DataSourceRequest] DataSourceRequest request)
{
IEnumerable<AddressObject> addressObjects = unitOfWork.AddressObjectRepository.Get(includeProperties: "ObjectType, Address, ObjectOwners");
DataSourceResult result = addressObjects.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
我有所有的参考。我可以从我的服务器端填充,所以当我写 Grid(Model) 时,网格被填充了,但我不想要这个。
【问题讨论】:
-
您是否尝试过在 Fiddler 中调试以查看您的操作是否被调用?还可以尝试添加错误处理程序 .Events(e => e.Error("error_handler")) 并创建 javascript 函数。
-
是的,我有。正在调用我的操作,并且控制器中的地址对象和结果变量已正确填充。
-
"所以当我写 Grid(Model) 时,网格被填充了,但我不想要这个。"我很困惑这是什么问题?
-
问题是:当我从传递给视图的模型填充我的网格时 - Viwe(myPopulatedModel) 然后 Grid(Model) 在我的视图中填充它。由于某些限制,我不能拥有服务器端填充,因此需要使用 Ajax 在客户端填充。这不起作用,即使我的控制器中的操作被调用和填充
-
你确定
read.Action("GetAddressObjects", "AddressObject")是正确的吗?
标签: c# asp.net-mvc-4 kendo-ui kendo-grid