1

使用 mvc,我有一个控制器,它每次刷新当前页面时都会调用 web 服务来获取数据并填充网格。

是否可以使用 ajax 连续调用此服务,从而从服务中实时获取数据?

这就是我的视图的设置方式:

@model FleetMonitorModel

<div class="span12">
    <legend>Fleet Monitor</legend>
        <div>
        @(Html.Kendo().Grid<FleetMonitorModel>()
              .Name("Grid")
              .DataSource(ds => ds
                  .Ajax()
                  .Read(read => read.Action("Get", "FleetMonitor"))
              )
              .HtmlAttributes(new { style = "height:auto;" })
              .Columns(columns =>
                  {
                      columns.Template(p => { }).ClientTemplate(" ").Width(310);
                      columns.Template(p => { }).ClientTemplate(" ").Width(250);
                      columns.Template(p => { }).ClientTemplate(" ").Width(150);
                      columns.Template(p => { }).ClientTemplate(" ");
                      columns.Template(p => { }).ClientTemplate(" ").Width(80);
                  })
              .ClientRowTemplate(Html.Partial("_ClientRowTemplate", Model).ToHtmlString())
              .Pageable()
              .Sortable())
    </div>
</div>

这是我的控制器操作:

private FleetMonitorModel Model { get; set; }

...

public ActionResult Get([DataSourceRequest] DataSourceRequest request)
{
    UnitContract[] listOfUnitsFromService = Client.GetListOfUnits(true);

    Model = new FleetMonitorModel()
                {
                    UnitDetails = GenerateUnitDetails(listsOfUnitsFromService.ToList())
                };

    return Json(Model.UnitDetails.ToDataSourceResult(request));
}
4

2 回答 2

1

您可以通过 javascript 调用 Grid 填充方法,如下所示:

var grid = $('#Grid').data('kendoGrid');    
grid.dataSource.read(); 

之后,您可以重复调用该方法来更新网格。

于 2013-06-19T14:09:00.260 回答
0

老话题,但我想补充一点,我们已经使用 Kendo 组件成功实现了 SignalR,并且它运行良好 :)

于 2013-08-05T08:32:11.023 回答