问题描述
我有一个Kendo Grid,我想在单选按钮更改时刷新其值。在单选按钮更改时,我将值分配给“隐藏”字段。出于某种原因,当API调用发生时,传递的参数仍然保留旧值,而不是加载隐藏字段的新值。我签入了HTML,隐藏字段的确保留了最新值。
网格代码如下:
.WebApi()
.Events(events =>
{
events.Sync("onSync");
})
.Read(read => read.Url("/api/LoadSettings/" + Model.HiddenFor1Value + "/" + Model.HiddenFor2Value))
)
JavaScript代码如下:
$(document).ready(function () {
$("input[type=radio][name=RadioSelected]").change(function () {
radioChanged();
});
});
function radioChanged() {
onSync();
}
function onSync() {
console.log('reload start');
var selectedColumnValue = $("input[name='RadioSelected']:checked").val();
console.log(selectedColumnValue);
$('#myHiddenFor1Value ').val(selectedColumnValue);
$("#Grd").data("kendoGrid").dataSource.read();
console.log('reload end');
}
正如我所说,隐藏字段显示html中的最新值,API调用工作正常,但传递的值仍然旧。知道同步不会刷新或选择最新值吗?
解决方法
当我们使用sync事件时,页面加载时形成的读取URL似乎没有变化。否则,它对我不起作用。
我刚刚更改了onSync方法以显式更新transport.options.read.url
,现在它可以按预期工作:
function onSync() {
var Value1 = "123";
var Value2 = "345";
var grid = $('#grd').data('kendoGrid');
grid.dataSource.transport.options.read.url = "/api/LoadSettings/" + Value1+ "/" + Value2;
}