1

@(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);
          })

When i click on this kendo multiselect component it send a ajax call to the server get data, but i click on it again it does not send a ajax request. it show cached(previously returned data). i need to send ajax call each time.(need mvc wrapper, transport -> cache : false).

tint
  • 33
  • 5
  • You need to use the [`read()`](http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#methods-read) function in order to force a refresh of the multiselect. This could be driven through the [`select`](http://docs.telerik.com/aspnet-mvc/helpers/multiselect/overview#by-handler-name) event of the multiselect. – Sandman Jun 07 '17 at 08:16
  • Thank you very much, i used filtering event for read. it works for me. – tint Jun 08 '17 at 01:19
  • 1
    Post up your answer, it might be useful to someone else experiencing a similar issue in the future :) – Sandman Jun 08 '17 at 07:51

1 Answers1

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
    }
}
tint
  • 33
  • 5