javascript - 如何禁用 kendo mvc 多选中的初始值,以便它们不会被取消选择?
问题描述
我正在尝试使用一些初始值填充剑道多选,用户以后无法删除这些初始值。
我试图运行多选小部件的 DataBond 事件并获取每个元素,但我无法完成我正在尝试的事情。也许(或更可能)我做错了什么。
另外,我已经看到这个禁用元素:
<span class="#: unselectableItem ? 'k-state-disabled': ''#">
#: text #
</span>
但我不确定,如何实现它。
到目前为止我所拥有的:
@(Html.Kendo().MultiSelect().Name("msEquipoResponsable")
.DataValueField("Id").DataTextField("Tipo")
.DataSource(ds => ds.Read(r => r.Action("ObtenerPersonal","AuditoriaPlaneacionMemorandoEditor")))
.Value(Model.EquipoResponsable.Split(','))
.Events(ev => ev.DataBound("onBindingMS"))
)
数据绑定函数:
function onBindingMS(event)
{
var dataItems = event.sender._dataItems;
$.each(dataItems, (ind, el) => {
//Disabled logic should be here i guess...
});
}
解决方案
尝试使用那些无法取消选择的项目来阻止deselect
事件完成。e.preventDefault()
deselect: function(e) {
if (e.dataItem.unselectableItem)
{
// Call preventDefault() to prevent the deselection
e.preventDefault();
}
}
在下面的代码片段中,根据属性选择了项目Item1
和Item3
开始,并且不能取消选择:unselectableItem
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled</title>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.common.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.rtl.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.default.min.css">
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.3.1023/styles/kendo.mobile.all.min.css">
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/angular.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/jszip.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.3.1023/js/kendo.all.min.js"></script></head>
<body>
</body>
<select id="multiselect" multiple="multiple">
<option selected>Item1</option>
<option>Item2</option>
</select>
<script id="item-template" type="text/x-kendo-template">
<span class="#: unselectableItem ? 'k-state-disabled': ''#">
#: text #
</span>
</script>
<script>
$("#multiselect").kendoMultiSelect({
dataSource: [{
id: 1,
text: "Item1",
unselectableItem: true
},{
id: 2,
text: "Item2",
unselectableItem: false
},{
id: 3,
text: "Item3",
unselectableItem: true
},{
id: 4,
text: "Item4",
unselectableItem: false
}],
dataValueField: "id",
itemTemplate: $("#item-template").html(),
tagTemplate: $("#item-template").html(),
deselect: function(e) {
if (e.dataItem.unselectableItem)
{
// Call preventDefault() to prevent the deselection
e.preventDefault();
}
},
value: [1,3]
});
</script>
</html>
推荐阅读
- .net - 如何在 Azure 的 VM 上运行 .NET?
- wavesurfer.js - wavesurfer.js 尝试在区域中设置句柄样式
- asp.net-mvc - c# .net5 动态前缀url 使前缀因访问时搜索多次变化
- python - python _thread 返回第一个 arg 必须是可调用的
- angular - 如何在 Angular 服务中本地保存 Apollo 响应?
- android - Kotlin 捕获图像并将其存储在本地
- postgresql - PostgreSQL 为有序查询选择了错误的多列索引
- redis - 如果我们在 Key 上进行分区,为什么我们需要在 Redis 中使用分布式锁?
- nlp - 使用 SageMaker BlazingText (word2vec) 进行预训练/迁移学习?
- python - ModuleNotFoundError: 没有使用 celery 和 rabbitmq 的名为 'django.config' 的模块