Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 剑道多选数据。模板中未定义长度_Templates_Telerik_Kendo Multiselect - Fatal编程技术网

Templates 剑道多选数据。模板中未定义长度

Templates 剑道多选数据。模板中未定义长度,templates,telerik,kendo-multiselect,Templates,Telerik,Kendo Multiselect,这非常简单,我有一个Multiselect,当选择一个项目时,我希望标记代表DataTextField。当选择多个项目时,我希望一个标记表示所选项目的数量。这是我的密码: @(Html.Kendo().MultiSelect() .Placeholder("Select Employees...") .Name("empSelect") .DataTextField("Employee") .DataValueField("PERSONNEL_KE

这非常简单,我有一个Multiselect,当选择一个项目时,我希望标记代表DataTextField。当选择多个项目时,我希望一个标记表示所选项目的数量。这是我的密码:

@(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>
# } #
所有的物品都从我的控制器回来了。当我选择一个项目时,标记显示UNDEFINED selected。显然data.length没有定义,但我知道没有其他方法可以获取所选项目的数量


我目前正在2016年3月1118日构建Telerik Kendo MVC。

数据没有长度属性。因此,始终在其他位置工作,并显示未定义

<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();
}

谢谢你的回复。那么如何获取所选项目的计数呢?如果您不想在第一次选择后仅显示项目文本,您可以添加.TagModeTagMode.Single并删除.tagtemplateIDtagtemplate我知道,但是当选择1个项目时,会选择TagMode Single show的1个项目。我希望它在选择1项时显示DataTextField Employee。当选择多个项目时,我希望它显示{X}个已选择的项目。我需要做的只是将data.length替换为获取所选项目计数所需的任何内容,并且所有内容都应正常工作。在onChange事件中,我添加了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);
  }))