2017-08-31 12 views
1

私は剣道グリッドにカスタムエディタをいくつか持っています.1つはマルチセレクションです(この1つはhttp://demos.telerik.com/aspnet-mvc/multiselectです)。これは、ページが要求されたときに作成されたのViewDataから得たデータである「bindto」を使用しています剣道ですべてを選択MultiSelect(mvc)

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

:私はそうのように見えるエディタのCSHTMLファイルを持っています。すべてが正常に動作します。問題はありません。 問題は、さまざまな実装を使用して「選択/選択解除」ボタンを実装しようとしていたことです。私は「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独自のフォーラムの助けを得て、彼らは私にこのソリューションを提供しました。 私は彼らからちょうどつもり引用直接だ:

複数選択の値()メソッドを使用して、ウィジェットにバインドされたモデルが更新されません、このメソッドは変更イベントをトリガしていないため。手動で項目を選択した後の変化をトリガすることにより、これをバイパスすることができます:

コードを答えて:

<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"); 
} 
関連する問題