Kendo 多选 data.length 在模板中未定义
Kendo Multiselect data.length undefined in template
这很简单,我有一个 Multiselect,当一个项目被 selected 时,我希望标签代表 DataTextField。当 selected 多个项目时,我想要一个标签来表示 selected 项目的数量。这是我的代码:
@(Html.Kendo().MultiSelect()
.Placeholder("Select Employees...")
.Name("empSelect")
.DataTextField("Employee")
.DataValueField("PERSONNEL_KEY")
.HtmlAttributes(new { style = "width:100%;font-size:10px;", id = "empSelect" })
.AutoBind(false)
.AutoClose(false)
.Filter(FilterType.Contains)
.TagTemplateId("tagTemplate")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetEmployees", "EmployeeTS");
})
.ServerFiltering(true);}))
这里是 tagTemplate 脚本:
<script id="tagTemplate" type="text/x-kendo-template">
# if (data.length < 2) { #
<span>
#= data.Employee #
</span>
# } else { #
<span>
#= data.length # selected
</span>
# } #
所有项目都从我的控制器返回正常。当我 select 一个项目时,标签显示 "UNDEFINED selected"。显然 "data.length" 未定义,但我不知道有其他方法可以获取 selected.
的项目数
我目前正在使用 Telerik Kendo MVC 的 2016.3.1118 版本。
"data" 没有 属性 的长度。因此,始终有效 "else" 并显示未定义。
<script>
function onChange(e) {
var multi = $("#empSelect").data("kendoMultiSelect");
var multi = $("#empSelect").data("kendoMultiSelect");
if (multi.listView._dataItems.length > 1) {
multi.setOptions({
tagMode: 'single'
});
} else {
multi.setOptions({
tagMode: 'multiple'
});
}
multi.refresh();
}
@(Html.Kendo().MultiSelect()
.Placeholder("Select Employees...")
.Name("empSelect")
.DataTextField("TANIM")
.DataValueField("URETIM_YERI")
.AutoBind(false)
.AutoClose(false)
.Filter(FilterType.Contains)
.TagMode(TagMode.Multiple)
.Events(e =>
{
e.Change("onChange");
})
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetFactories", "Factory");
})
.ServerFiltering(true);
}))
这很简单,我有一个 Multiselect,当一个项目被 selected 时,我希望标签代表 DataTextField。当 selected 多个项目时,我想要一个标签来表示 selected 项目的数量。这是我的代码:
@(Html.Kendo().MultiSelect()
.Placeholder("Select Employees...")
.Name("empSelect")
.DataTextField("Employee")
.DataValueField("PERSONNEL_KEY")
.HtmlAttributes(new { style = "width:100%;font-size:10px;", id = "empSelect" })
.AutoBind(false)
.AutoClose(false)
.Filter(FilterType.Contains)
.TagTemplateId("tagTemplate")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetEmployees", "EmployeeTS");
})
.ServerFiltering(true);}))
这里是 tagTemplate 脚本:
<script id="tagTemplate" type="text/x-kendo-template">
# if (data.length < 2) { #
<span>
#= data.Employee #
</span>
# } else { #
<span>
#= data.length # selected
</span>
# } #
所有项目都从我的控制器返回正常。当我 select 一个项目时,标签显示 "UNDEFINED selected"。显然 "data.length" 未定义,但我不知道有其他方法可以获取 selected.
的项目数我目前正在使用 Telerik Kendo MVC 的 2016.3.1118 版本。
"data" 没有 属性 的长度。因此,始终有效 "else" 并显示未定义。
<script>
function onChange(e) {
var multi = $("#empSelect").data("kendoMultiSelect");
var multi = $("#empSelect").data("kendoMultiSelect");
if (multi.listView._dataItems.length > 1) {
multi.setOptions({
tagMode: 'single'
});
} else {
multi.setOptions({
tagMode: 'multiple'
});
}
multi.refresh();
}
@(Html.Kendo().MultiSelect()
.Placeholder("Select Employees...")
.Name("empSelect")
.DataTextField("TANIM")
.DataValueField("URETIM_YERI")
.AutoBind(false)
.AutoClose(false)
.Filter(FilterType.Contains)
.TagMode(TagMode.Multiple)
.Events(e =>
{
e.Change("onChange");
})
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetFactories", "Factory");
})
.ServerFiltering(true);
}))