剑道UI 2016升级后,Kendo Multiselect数据消失

时间:2016-11-23 07:01:22

标签: jquery kendo-ui upgrade

我们使用的是kendo 2013并升级到2016版。 升级后,我们遇到了剑道多选问题 使用ajax调用来绑定数据的控件。(预先填充的多选控件没有问题。)多选对于在剑道下拉列表中选择的数据进行填充。 在某些情况下,多选值会消失。

请参阅视频了解更多信息。

http://www.screencast.com/t/0xY9SPuQj

http://www.screencast.com/t/gVH2rE5365

以下是使用的控件。

****下拉*********

@(Html.Kendo().DropDownListFor(m => m.SelectedViewState)
   .OptionLabel("--Select--")
   .DataSource(source => source
                .Read(read => read.Action("LoadViewState", "CommandForm")).ServerFiltering(true))
  .Events(e => e.Change("onViewStateChange"))
           .DataTextField("Name")
           .DataValueField("ViewStateId")
           .Deferred()
           .HtmlAttributes(new { style = "width: 180px" }))

****多选*********

@(Html.Kendo().MultiSelectFor(model => model.Payer)
           .AutoBind(true)
           .Deferred()
         .DataTextField("Name")
         .DataValueField("Id")
         .Placeholder("Select Payers...")
         .DataSource(source =>
         {
             source.Read(read =>
             {
                 read.Action("LoadPayerMultiSelect", "CommandForm");
             })
             .ServerFiltering(true);
         })
          .ItemTemplate("<dl>" +
                         "<dd class='first-item'>${ data.Name }</dd>" +
                         "<dd> ${ data.Code }</dd>" +
                         "</dl>")
         .HtmlAttributes(new { style = "width:95%;height:26px;overflow: auto;position:relative;" })
             )

*********代码用于填写多选********

function onViewStateChange(e) {
    var value = $("#SelectedViewState").val();
    var dropDown = e.sender;
    var query = new kendo.data.Query(e.sender.dataSource.data());
    var data = query.filter({ field: "ViewStateId", operator: "eq", value: value }).data;
    if (data != undefined && data.length!=0) {
        var setting = data[0].Setting;
        var model = JSON.parse(setting).ViewStates;
        var payerListData = '[' + model.Payer + ']';//data in  model.Payer "{"Id":"40eb0d8c-6021-403c-92b0-efdc4865ef7c","Name":"(HOSPICE) ANDROSCOGGIN12"}"
        var payerLists = JSON.parse(payerListData);
        var payerSelect = $('#Payer').data('kendoMultiSelect');
        var payerGuidArray = [];
        $.each(payerLists, function (index, objValue) {
            payerGuidArray.push(objValue.Id);
        });
        payerSelect.dataSource.data(payerLists);
        payerSelect.value(payerGuidArray);
    }
}

请协助我解决此问题。

提前致谢..

0 个答案:

没有答案