MVC で Kendo.UI MultiSelect を使用しています
@(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"))
)
そして今、いくつかのアイテムを削除できないようにしたいと思います。したがって、現在の値を DataBound-Event に保存します
function saveCurrent(multi)
{
multi._savedValues = multi.value().slice(0);
multi._savedItems = multi._dataItems.slice(0);
}
function onDataBound()
{
saveCurrent(this);
}
そして、OnChange 前後の違いを検出します。
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);
}
これは完全に機能します。しかし、新しいフレーズを入力すると、ウィジェットが Read-Action を呼び出してアイテムを追加すると、アイテムを削除してこのアクションをキャンセルするとすべて正常に動作しますが、アイテムは削除されます。なにが問題ですか?