有人可以帮我解决在IE平台上用mvc填写Kendo UI Grid的问题吗?
以下是使用的技术: 1)Telerik Kendo UI版本2015.1.408.545 2)MVC 5.0,剃刀视图 3).Net Framework 4.5
在Chrome中,只要加载MVC View页面,就会调用read action方法两次。第一个调用是让scema绑定到Kendo UI Grid。第二次是获取数据以填充Kendo UI Grid。所有这些从Controller到View的请求,反之亦然在Chrome中运行良好。 但是当我在IE(11.0)中运行此应用程序时,它第一次正确显示所有数据。但是当发布另一个数据的请求时,它不会两次调用action方法。因此,先前的数据正在Grid上显示。那就是问题。
查看
@model CustomReportResultsViewModel
@(Html.Phoenix().Grid<DataTable, DataTable>()
.DataSourceReadController("CustomReport", "Reports")
.KeyName("ID")
.RecordName(Model.RecordName)
.CacheEditorTemplate(false)
.Columns(columns => { foreach (DataColumn c in Model.DataTable.Columns) { }})
)
控制器
public ActionResult ResultsGrid(int id, string recordName) {
return PartialView("ResultsGrid", new CustomReportResultsViewModel { DataTable = GetData(id, true), RecordName = recordName });
}
// List
public JsonResult Read([DataSourceRequest] DataSourceRequest request)
{
var table = GetData();
var result = table.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet, 3);
}
private string GetDataSource(StringBuilder columnSchema, StringBuilder aggregates, StringBuilder group, string primaryKey, string read) {
var dataSource = new StringBuilder();
dataSource.Append("{transport:{"); dataSource.Append("read:{type:\"GET\",url:\"" + read + "\"}"); dataSource.Append("},");
dataSource.Append("type:\"aspnetmvc-ajax\",");
}
答案 0 :(得分:0)
您如何申请数据? AJAX通话?如果添加了网格数据源代码/控制器方法会更好。请把问题缩小。
此网格/控制器签名在IE上始终适用于我。
控制器:
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult GetData([DataSourceRequest] DataSourceRequest request)
{
//whatever it takes to get that data, like
var data = repository.GetAll<Model>();
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
查看:
@using Entites.Model
@(Html.Kendo().Grid<Model>()
.Name("grid")
.DataSource(dataSource =>
{
dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("GetData", "Home"));
})
)
答案 1 :(得分:0)
感谢您的快速回复。 我们遵循以下代码:
public ActionResult ResultsGrid(int id, string recordName)
{
return PartialView("ResultsGrid", new CustomReportResultsViewModel { DataTable = GetData(id, true), RecordName = recordName });
}
// List
public JsonResult Read([DataSourceRequest] DataSourceRequest request)
{
var table = GetData();
var result = table.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet, 3);
}
private string GetDataSource(StringBuilder columnSchema, StringBuilder aggregates, StringBuilder group, string primaryKey, string read)
{
var dataSource = new StringBuilder();
dataSource.Append("{transport:{");
dataSource.Append("read:{type:\"GET\",url:\"" + read + "\"}");
dataSource.Append("},");
dataSource.Append("type:\"aspnetmvc-ajax\",");
}