我们使用的是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);
}
}
请协助我解决此问题。
提前致谢..