2016-05-28 9 views
0

剣道グリッドにチェックボックスの列があります。グリッド内のすべてのチェックボックスをオンにして、ページ全体に保持したいと思います。 CheckAll()メソッドがありますが、剣道グリッドの最初のページのみをチェックします。リンクやボタンをワンクリックですべてのチェックボックスをチェックする方法は?私のコードはここにある:Telerik Kendo Gridのすべてのチェックボックスをチェックする方法

<div style="text-align:right; font-size: 0.9em;height:28px;position: relative;"> 

     <span style="float:left;text-align:left;"> 
      <a href="#" onclick="checkAll();">Check All</a>&nbsp; 
      <a href="#" onclick="uncheckAll();">Uncheck All</a>&nbsp; 
      <a class="k-button k-button-icontext k-grid-Patient" id="hrefCheckedPatients" href="#" onclick="getChecked();">Export to PDF</a>&nbsp; 
      <a href="#" id="lnkPdfDownload" style="display:none;" onclick="$(this).hide();">Download Generated PDF</a> 
      <label id="checkedMsg" style="color:red;display:none;"></label> 
     </span> 

    </div> 
@(Html.Kendo().Grid<RunSummary>() 
      .Name("CheckedPatients")   
      .DataSource(datasource => datasource 
       .Ajax().PageSize(25)   
       .Sort(sort => sort.Add("UniqueId").Ascending())       
       .Read(read => read.Action("GetRunSummaries", "PatientReport"))) 
      .Columns(columns => 
       { 

        columns.Bound(c => c.UniqueId).Title(ELSORegistry.Resources.Views.Home.HomeStrings.UniqueId) 
         .ClientTemplate("<input type='checkbox' class='primaryBox' id='#= UniqueId #'>#= UniqueId #</input>"); 
        columns.Bound(c => c.RunNo).Title(SharedStrings.Run); 
        columns.Bound(c => c.Birthdate).Title(SharedStrings.Birthdate).Format("{0:g}").Filterable(true); 

        columns.Bound(c => c.customAge).Title(SharedStrings.Age) 
         .Filterable(
          filterable => filterable 
           .UI("AgeFilter") 
           .Extra(false) 
           .Operators(operators => operators 
            .ForString(str => str.Clear().IsEqualTo("Is equal to")) 
            ) 

         ); 

        columns.Bound(c => c.TimeOn).Title(PatientStrings.DateOn) 
         .Format("{0:g}") 
         .Filterable(true); 
        columns.Bound(c => c.TimeOff).Title(PatientStrings.DateOff) 
         .Format("{0:g}") 
         .Filterable(true); 
        columns.Bound(c => c.DischargedAlive).Title(PatientStrings.DischargedAlive).Filterable(true).ClientTemplate("#= DischargedAlive ? 'Yes' : 'No' #"); 
        columns.Bound(c => c.ShowSubmitted).Title(PatientStrings.Submitted).Filterable(true).ClientTemplate("#= ShowSubmitted ? 'Yes' : 'No' #"); 
        columns.Bound(c => c.SupportTypeEnum).Title(PatientStrings.SupportType).Filterable(true);//.ClientTemplate("#= SupportType ? 'Yes' : 'No' #"); 
       } 
     ) 
      .Pageable(p => p.PageSizes(new[] {10, 25, 50, 100})) 
      .Sortable() 
      .Filterable() 
      .Events(e => e.FilterMenuInit("FilterMenuFuncWithAge")) // apply x [closing box] on pop up filter box 
     ) 
<script type="text/javascript"> 


    function checkAll() { 
     $('input').prop('checked', 'checked'); 
    } 

    function uncheckAll() { 
     $('input').removeAttr('checked'); 
    } 
</script> 

答えて

2

あなたはdatasourceプロパティではありませんビューを更新する必要があります。 CheckAll関数内でそのような何かを試してみてください:

var dataSource =('[name]="CheckedPatients"').data('kendoGrid').dataSource; 
var data = dataSource.data(); 
var totalNumber = data.length; 

for(var i = 0; i<totalNumber; i++) { 
    var currentDataItem = data[i]; 
    currentDataItem.set("ShowSubmitted", "true"); 
} 

UPDATE

// here all filtered/sorted data as in grid. 
var view = dataSource.view(); 

Hereあなたがdatasourceオブジェクトについて剣道のドキュメントを読むことができます

アップデート2ここ にソリューションをからすべてのデータを取得するためにページングされたデータソース:

var dataSource = $("#grid").data("kendoGrid").dataSource; 
var filters = dataSource.filter(); 
var allData = dataSource.data(); 
var query = new kendo.data.Query(allData); 
var data = query.filter(filters).data; 
+0

ありがとう、それは完全に動作します。ろ過後に残っているアイテムだけを含める方法はありますか? – alenan2013

+0

そのように答えると、すでに解決されている場合、他の人が新しい回答を投稿するのを防ぐことができます。新しいアップデートを確認してください –

+0

あなたの素早く便利な答えをもう一度ありがとうございます。しかし、view = dataSource.view()は、グリッドの最初のページからフィルタリングされたデータのみを取ります。私はすべてのページからすべてのフィルタリングされたデータを取得したいと思います。出来ますか? – alenan2013

関連する問題