MVC Kendo Grid read.Action()。数据(函数)未在强制datasource.read()上调用

问题描述 投票:0回答:1

我们的代码有两个下拉列表。当onchange()为第一次射击时,它调用$("#classDropDown").data("kendoDropDownList").dataSource.read();强制第二次更新。

<%: Html.Kendo().DropDownList().Name("speciesDropDown")
          .DataTextField("Text")
          .DataValueField("Value")
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("GetNLSSpecies", "RefData").Data("noFilters");
              });
          })
          .HtmlAttributes(new { style = "width: 50%" })
          .Filter(FilterType.Contains)
%>
...
<%: Html.Kendo().DropDownList().Name("classDropDown")
          .DataTextField("Text")
          .DataValueField("Value")
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("GetClassData", "RefData").Data("mergeData()"); 
              });
          })
          .HtmlAttributes(new { style = "width: 50%" })
          .Filter(FilterType.Contains)
%>

其他地方......

$('#speciesDropDown').on('change', function (event) {
    ...
    $("#classDropDown").data("kendoDropDownList").dataSource.read();
}

调用mergeData()函数以提供从Javascript到服务器的数据。问题是,因为我把它称为函数,所以在dataSource.read()期间不会调用它。但最初在页面加载时调用它。

显然我可以将其更改为mergeData(即不是函数),但这是最简单的情况。我实际上是想传递参数,例如:

    .Data("mergeData('getSpeciesDropdownObj','getShownOrRequired(\"OtherClass\")')")

这对我来说似乎是个错误。对你有用吗?

我想在https://www.telerik.com/forums/发布此信息,但它只对许可证持有者开放,我目前无法访问详细信息。我希望Telerik对此进行监控并给我一些反馈。

jquery telerik kendo-asp.net-mvc
1个回答
1
投票

看看Razor标记如何被转换和你的

Data("mergeData('getSpeciesDropdownObj','getShownOrRequired(\"OtherClass\")')")

将被翻译成

data : mergeData('getSpeciesDropdownObj','getShownOrRequired(\"OtherClass\")')")

由于qazxsw我将同时包含对象或函数,这可能会导致混淆。

在你的情况下,transport.read.data不会包含对函数的引用,而是对对象的引用(函数求值的结果)。而transport.read.data会将Data("mergeData")设置为mergeData函数的引用。

如果您需要指定一些额外的参数,我建议您探索其他transport.read.data重载。

在这种情况下,这将是你的起点:

Data

否则你将为qazxsw poi定义一个闭包。

例如。

Data(@<text>function mergeData(){}</text>)
© www.soinside.com 2019 - 2024. All rights reserved.