Kendo ui 如何防止删除KendoUI multiselect中的项目?
我在MVC中使用Kendo.UI MultiSelectKendo ui 如何防止删除KendoUI multiselect中的项目?,kendo-ui,kendo-asp.net-mvc,kendo-multiselect,Kendo Ui,Kendo Asp.net Mvc,Kendo Multiselect,我在MVC中使用Kendo.UI MultiSelect @(Html.Kendo().MultiSelect() .Name("ADGroups") .DataTextField("Name") .DataValueField("Value")
@(Html.Kendo().MultiSelect()
.Name("ADGroups")
.DataTextField("Name")
.DataValueField("Value")
.MinLength(3)
.Value(Model.SelectedADGroups)
.HtmlAttributes(new { style = "width:auto", id="ADGroupsList" })
.Filter(FilterType.Contains)
.DataSource(source => source.Read(read => read.Action("GetADGroups", "Edit"))
.ServerFiltering(true))
.Events(e => e.Change("onChange").DataBound("onDataBound"))
)
现在我想阻止删除某些项目。
因此,我将当前值保存在数据绑定事件上
function saveCurrent(multi)
{
multi._savedValues = multi.value().slice(0);
multi._savedItems = multi._dataItems.slice(0);
}
function onDataBound()
{
saveCurrent(this);
}
一旦改变了,我就发现了之前和之后的区别
function onChange()
{
var previous = this._savedValues;
var current = this.value();
if (current.length < previous.length)
{
var diff = $(previous).not(current).get(0);
if (confirm('Sure?'))
{
// do nothing value already deleted
}
else
{
// reset
this.value(previous);
}
}
saveCurrent(this);
}
函数onChange()
{
var previous=此值。\u保存的值;
var current=此.value();
如果(当前长度<先前长度)
{
var diff=$(上一个).not(当前).get(0);
如果(确认('确定?'))
{
//“不执行任何操作”值已删除
}
其他的
{
//重置
此值(以前的);
}
}
保存当前(本);
}
这很好用。但是,如果我键入一个新短语,小部件调用Read操作来添加一些项目,所有操作都可以正常工作,现在当我删除一个项目并取消此操作时,项目将被删除。
怎么了?这是一个现有的例子,但没有预防措施。Telerik提供的文件。不存在OnDelete或OnRemove事件。设置此.value(上一个)后-此.value()不包含上一个中的数组:-(