Razor 剑道UI网格签名器数据源未触发更新事件
我正在使用asp.net core razor页面和剑道网格,剑道网格是使用Signal的数据源。它的初始读取结果为ok,但更新不会触发。我看过剑道演示和其他stackover flow页面,但似乎没有任何效果 我知道API在发送更新时工作得很好,因为我在通过Chrome调试websocket时看到调用,websocket接收到一个更新命令,其中包含json格式的新数据。但是网格不会更新,也不会发出任何更新命令。就好像它从来没有收到过,或者不知道它收到过 Index.cshmtlRazor 剑道UI网格签名器数据源未触发更新事件,razor,kendo-ui,signalr,Razor,Kendo Ui,Signalr,我正在使用asp.net core razor页面和剑道网格,剑道网格是使用Signal的数据源。它的初始读取结果为ok,但更新不会触发。我看过剑道演示和其他stackover flow页面,但似乎没有任何效果 我知道API在发送更新时工作得很好,因为我在通过Chrome调试websocket时看到调用,websocket接收到一个更新命令,其中包含json格式的新数据。但是网格不会更新,也不会发出任何更新命令。就好像它从来没有收到过,或者不知道它收到过 Index.cshmtl <scr
<script src="~/signalr/signalr.js"></script>
<script>
var url = https://demosite.com/hub/controller;
var hub = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Information)
.withUrl(url,
{
transport: signalR.HttpTransportType.WebSockets | signalR.HttpTransportType.LongPolling
})
.build();
var hubStart = hub.start();
</script>
@(Html.Kendo().Grid<myModel>
()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.Name);
columns.Bound(c => c.Date);
})
.HtmlAttributes(new { style = "width: 98%;" })
.DataSource(dataSource => dataSource
.SignalR()
.AutoSync(true)
.ServerFiltering(true)
.ServerSorting(true)
.PageSize(10)
.Transport(tr => tr
.Promise("hubStart")
.Hub("hub")
.Client(c => c
.Read("read") //Read works, initial data loads
.Create("create")
.Update("update")
.Destroy("destroy")
)
.Server(s => s
.Read("read")
.Create("create")
.Update("update")
.Destroy("destroy")
)
)
.Schema(schema => schema
.Data("Data")
.Total("Total")
.Aggregates("Aggregates")
.Model(model =>
{
model.Id(p => p.ID);
model.Field(p=> p.Name);
model.Field(p => p.Date);
}
)
)
)
.Group(g => g.Add(x => x.Name))
)
.Events(x=>
{
x.DataBound("collapseAllGroups");
}
)
.Groupable(true)
.Sortable()
.Filterable()
.Pageable(pager => pager.AlwaysVisible(true).PageSizes(new int[] { 10, 20, 50, 100 }))
.Resizable(resize => resize.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
.Selectable()
)
变量url=https://demosite.com/hub/controller;
var hub=new signal.HubConnectionBuilder()
.configureLogging(信号器.LogLevel.Information)
.withUrl(url,
{
传输:signal.HttpTransportType.WebSockets | signal.HttpTransportType.LongPolling
})
.build();
var hubStart=hub.start();
@(Html.Kendo().Grid)
()
.名称(“网格”)
.列(列=>
{
columns.Bound(c=>c.Name);
columns.Bound(c=>c.Date);
})
.HtmlAttributes(新的{style=“width:98%;”})
.DataSource(DataSource=>DataSource
.signar()
.自动同步(真)
.ServerFiltering(true)
.ServerSorting(true)
.页面大小(10)
.运输(tr=>tr
.承诺(“hubStart”)
.Hub(“Hub”)
.Client(c=>c
.Read(“Read”)//读取工作,初始数据加载
.创建(“创建”)
.更新(“更新”)
.销毁(“销毁”)
)
.Server(s=>s)
.读(“读”)
.创建(“创建”)
.更新(“更新”)
.销毁(“销毁”)
)
)
.Schema(Schema=>Schema
.数据(“数据”)
.总计(“总计”)
.骨料(“骨料”)
.Model(Model=>
{
model.Id(p=>p.Id);
model.Field(p=>p.Name);
model.Field(p=>p.Date);
}
)
)
)
.Group(g=>g.Add(x=>x.Name))
)
.事件(x=>
{
x、 数据绑定(“collapseallgroup”);
}
)
.Groupable(true)
.Sortable()
.可过滤()
.Pageable(pager=>pager.AlwaysVisible(true).PageSizes(新的int[]{10,20,50,100}))
.resize可调整大小(resize=>resize.Columns(true))
.Reorderable(reorder=>reorder.Columns(true))
.可选()
)
原料药
[HttpGet]
公共异步任务GetTest()
{
myModel mod=新的myModel();
mod.Name=“新名称”;
mod.Date=DateTime.UTCNow.ToString();
//向连接的信号器客户端发送更新命令
wait_hub.Clients.All.SendAsync(“更新”,mod);
返回模式;
}
如果有任何帮助,我们将不胜感激。好的,我成功地完成了这项工作。事实证明,由于网格最初预期的是DataSourceResult,所以在进行更新之前,我必须将myModel转换为DataSourceResult类型。下面的例子应该被认为是伪代码,因为我在我的手机上输入这个
await _hub.Clients.All.SendAsync("update", new DataSourceResult(mod));
await _hub.Clients.All.SendAsync("update", new DataSourceResult(mod));