刷新SignalR telerik网格

时间:2019-06-29 11:11:38

标签: kendo-ui telerik signalr kendo-grid

我在发生故障时将网格绑定到SignalR集线器

@(Html.Kendo().Grid<MyDownloader.Core.ViewModel.DownloaderViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.LocalFile);
        columns.Bound(c => c.FileSize);
        columns.Bound(c => c.StatusMessage);
        columns.Bound(c => c.Progress);
        columns.Bound(c => c.Left);
        columns.Bound(c => c.Rate);
        columns.Bound(c => c.CreatedDateTime);
        columns.Bound(c => c.State);
        columns.Bound(c => c.ResourceLocation);
        columns.Command(c => c.Destroy());

    })
    .HtmlAttributes(new { style = "height: 550px;margin-bottom:20px;" })
.Sortable()
.Scrollable()
.DataSource(dataSource => dataSource
    .SignalR()
    .AutoSync(true)
    .Events(events => events.Push("onPush"))
    .Sort(s => s.Add("FileSize").Descending())
    .Transport(tr => tr
        .Promise("hubStart")
        .Hub("hub")
        .Client(c => c
            .Read("read")
            .Create("create")
            .Update("update")
            .Destroy("destroy"))
        .Server(s => s
            .Read("read")
            .Create("create")
            .Update("update")
            .Destroy("destroy"))).Schema(schema => schema
        .Model(model =>
        {
            model.Id("FileSize");
        }))
    ))

当对象添加到数据库(下载器表)时,我想更新所有客户端 我像这样在集线器外部调用read()客户端方法

            var context = GlobalHost.ConnectionManager.GetHubContext<Hubs.DownloadrHub>();
        context.Clients.All.read();

但未引发read()方法,网格未刷新,数据未更新

如何从集线器中更新所有客户端网格?

1 个答案:

答案 0 :(得分:0)

通常,您不会在客户端上调用read方法。您调用创建,更新或删除方法。取决于执行的操作。网格会自动处理它。

例如Clients.All.update(new {Data = anyyourdatais);

看看电话examples