【问题标题】:Kendo Multiselect Data Read Without Caching没有缓存的剑道多选数据读取
【发布时间】:2017-06-07 06:22:17
【问题描述】:

@(Html.Kendo().MultiSelect()
          .Name(Html.Name(ReflectionExtensions.GetName((IAddressViewModel x) => x.SuburbId)).ToString())
          .DataTextField("DisplayName")
          .DataValueField("Id")
          .Placeholder("Select products...")
          .AutoBind(false)
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("GetSuburbsByCountry", "Data").Data("siberia.address.filterSuburbByCountryIdParameter");
              })
              .ServerFiltering(true);
          })

当我单击此 kendo 多选组件时,它会向服务器发送 ajax 调用获取数据,但我再次单击它时不会发送 ajax 请求。它显示缓存(以前返回的数据)。我每次都需要发送 ajax 调用。(需要 mvc 包装器,传输 -> 缓存:false)。

【问题讨论】:

  • 您需要使用read() 函数来强制刷新多选。这可以通过多选的select 事件来驱动。
  • 非常感谢,我使用过滤事件进行读取。它对我有用。
  • 发布您的答案,它可能对以后遇到类似问题的其他人有用:)

标签: asp.net-mvc kendo-ui kendo-multiselect


【解决方案1】:
    @(Html.Kendo().MultiSelect()
              .Name(Html.Name(ReflectionExtensions.GetName((IAddressViewModel x) => x.SuburbId)).ToString())
              .DataTextField("DisplayName")
              .DataValueField("Id")
              .Placeholder("Select Suburb")
              .AutoBind(false)
              .Events(e => { e.Filtering("siberia.address.onSuburbFiltering"); })
              .MinLength(1)
              .DataSource(source =>
              {
                  source.Read(read =>
                  {
                      read.Action("GetSuburbsByCountry", "Data").Data("siberia.address.filterSuburbByCountryIdParameter");
                  })
                  .ServerFiltering(true);
              })

-------------------------------------------------------------------------

function onSuburbFiltering() {
    var currentSuburbId = '#' + prefix + 'SuburbId';
    $(currentSuburbId).data().kendoMultiSelect.dataSource.read();
}

-------------------------------------------------------------------------

function filterSuburbByCountryIdParameter() {
    var currentCountryId = '#' + prefix + 'CountryId';
    var currentSuburbId = '#' + prefix + 'SuburbId';
    var selectedCountry = $(currentCountryId).data("kendoDropDownList").value();
    var surburbFilterText = $(currentSuburbId).data("kendoMultiSelect")._prev;
    return {
        SelectedCountryId: selectedCountry,
        Text: surburbFilterText
    }
}

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多