2017-07-24 101 views
0

这很简单,我有一个Multiselect,当选择一个项目时,我希望标签代表DataTextField。当选择多个项目时,我想要一个标签来表示所选项目的数量。这里是我的代码:Kendo Multiselect data.length在模板中未定义

@(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”是未定义的,但我知道没有其他方法来获取所选项目的数量。

我目前在Telerik Kendo MVC的2016.3.1118版本中。

回答

0

“数据”不具有长度属性。因此,总是工作“其他”,并显示未定义。

<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); 
    })) 
+0

感谢您的响应。那么我如何获取所选项目的数量呢? – user2777664

+0

如果你不想在第一次选择后显示项目文本,你可以添加“.TagMode(TagMode.Single)”并移除“.TagTemplateId(”tagTemplate“)” –

+0

我知道,但TagMode Single show的“1选择1项目时选择的项目“。我希望它在显示DataTextField(在这种情况下为Employee)时选择1个项目。当选择多个项目时,我希望它显示“{X}个项目被选中” – user2777664