Grid不会调用action方法来填充IE中的数据

时间:2015-05-25 11:57:28

标签: asp.net-mvc kendo-ui kendo-grid

有人可以帮我解决在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\",");
}

2 个答案:

答案 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\",");
 }