events.Sync没有在Kendo Grid中传递更新的参数

问题描述

我有一个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;
    }