2017-08-31 93 views
1

我有一个自定义编辑器的kendo网格,其中一个是多选(这个是http://demos.telerik.com/aspnet-mvc/multiselect)。我有一个看起来像这样的编辑器CSHTML文件:“全选”在Kendo MultiSelect(mvc)

@model IEnumerable<ManageSitesInTemplateViewModel> 
@(Html.Kendo().MultiSelectFor(m => m) 
    .AutoClose(false) 
    .DataTextField("SiteName") 
    .DataValueField("SiteId") 
    .BindTo((IEnumerable<ManageSitesInTemplateViewModel>)ViewData["sites"]) 
) 

,使用“bindto”,这是从得到的ViewData数据请求页面时创建。一切正常,就好像没问题。 问题是我一直在试图实现一个“选择/取消全选”按钮使用各种实现无济于事。我怀疑这是因为我使用“bindto”。 这是一些我已经试过例子:

How can we implement select All option in Kendo MultiselectFor

http://docs.telerik.com/kendo-ui/controls/editors/multiselect/how-to/selection/select-deselect-all-items

http://www.telerik.com/forums/select-all-items-after-data-is-read

我可以得到按钮正确选择一切,但被选中的一切,当我尝试保存在网格上的条目,该行为不被解雇。没有任何反应,选择重置。如果我手动选择,仍然有效。

这是怎么回事?自定义编辑 全码:

@model IEnumerable<ManageSitesInTemplateViewModel> 
@(Html.Kendo().MultiSelectFor(m => m) 
    .AutoClose(false) 
    .DataTextField("SiteName") 
    .DataValueField("SiteId") 
    .BindTo((IEnumerable<ManageSitesInTemplateViewModel>)ViewData["sites"]) 
) 
<button class="k-button" id="selectall123">Select All</button> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#selectall123").on('click', function (e) { 
      e.preventDefault(); 
      var multiselect = $('#Sites').data("kendoMultiSelect"); 

      var all = $.map(multiselect.dataSource.data(), function (dataItem) { 
       return dataItem.SiteId; 
      }); 
      multiselect.value(all); 
     }); 
    }); 
</script> 

回答

0

我会后的解决方案,我最终得到,如果任何人发现他们的方式对这一问题。 从Telerik自己的论坛获得帮助后,他们向我提供了可用的解决方案。 我只是要报价直接从他们:

当使用多选的value()方法,绑定到插件的模式将无法更新,因为这种方法不会触发更改事件。您可以通过选择项目后,手动触发变化绕过此:

的答案代码:

<script type="text/javascript"> 
$(document).ready(function() { 
$("#selectall123").on('click', function (e) { 
... 

multiselect.value(all); 
multiselect.trigger("change"); 
}); 
}); 
</script> 
0

我得到了同样的家伙,这是为我工作的例子。

@(Html.Kendo().MultiSelect().Name("Config_MetricType") 
          .BindTo(Model.Config_MetricTypes) 
          .DataValueField("MetricTypeId") 
          .DataTextField("MetricDisplayName") 
          .Events(e => e.DataBound("selectAllMetrics")) 
          .HtmlAttributes(new { style = "width: 50%", @class = "pull-left" })) 

JavaScript函数:

function selectAllMetrics() { 
    var Config_MetricType = $("#Config_MetricType").data("kendoMultiSelect"); 
    var all = $.map(Config_MetricType.dataSource.data(), function (dataItem) { 
     return dataItem.MetricTypeId; //DataValueField 
    }); 
    Config_MetricType.value(all); 
    Config_MetricType.trigger("change"); 
} 
相关问题