Checkbox 如何勾选Telerik剑道网格中的所有复选框

Checkbox 如何勾选Telerik剑道网格中的所有复选框,checkbox,kendo-ui,kendo-grid,kendo-asp.net-mvc,Checkbox,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我有一个带复选框列的剑道格网。我想勾选网格中的所有复选框,并将其保留在页面中。我有一个CheckAll()方法,但它只检查剑道网格的第一页。如何通过单击链接或按钮来选中所有复选框?我的代码在这里: <div style="text-align:right; font-size: 0.9em;height:28px;position: relative;"> <span style="float:left;text-align:left;">

我有一个带复选框列的剑道格网。我想勾选网格中的所有复选框,并将其保留在页面中。我有一个CheckAll()方法,但它只检查剑道网格的第一页。如何通过单击链接或按钮来选中所有复选框?我的代码在这里:

<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>

@(Html.Kendo().Grid())
.姓名(“被检查的患者”)
.DataSource(DataSource=>DataSource
.Ajax().PageSize(25)
.Sort(Sort=>Sort.Add(“UniqueId”).Ascending()
.Read(Read=>Read.Action(“GetRunSummaries”、“PatientReport”))
.列(列=>
{
columns.Bound(c=>c.UniqueId).Title(ELSORegistry.Resources.Views.Home.HomeStrings.UniqueId)
.ClientTemplate(“#=唯一ID”);
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)
.可过滤(
可过滤=>可过滤
.UI(“年龄过滤器”)
.额外(错误)
.Operators(Operators=>Operators
.ForString(str=>str.Clear().IsEqualTo(“等于”))
)
);
columns.Bound(c=>c.TimeOn).Title(PatientStrings.DateOn)
.Format(“{0:g}”)
.可过滤(真);
columns.Bound(c=>c.TimeOff).Title(PatientStrings.DateOff)
.Format(“{0:g}”)
.可过滤(真);
columns.Bound(c=>c.DischargedAlive).Title(PatientStrings.DischargedAlive).Filterable(true).ClientTemplate(“#=DischargedAlive?”是“:”否“#”;
columns.Bound(c=>c.ShowSubmitted).Title(PatientStrings.Submitted).Filterable(true).ClientTemplate(“#=ShowSubmitted?是”:“否”#);
columns.Bound(c=>c.SupportTypeEnum).Title(PatientStrings.SupportType).Filterable(true);/.ClientTemplate(“#=SupportType?”“是”:“否”);
}
)
.Pageable(p=>p.PageSizes(新[]{10,25,50,100}))
.Sortable()
.可过滤()
.Events(e=>e.FilterMenuInit(“FilterMenuFuncWithAge”)//在弹出的筛选器框上应用x[关闭框]
)
函数checkAll(){
$('input').prop('checked','checked');
}
函数uncheckAll(){
$('input').removeAttr('checked');
}

您需要更新
数据源
属性,而不是视图。 在
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");
}
您可以阅读有关
数据源
对象的剑道文档

更新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;

您需要更新
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");
}
您可以阅读有关
数据源
对象的剑道文档

更新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;

非常感谢,它工作得非常好。有没有办法只包括过滤后剩下的项目?这样做可以防止其他人在问题已经解决的情况下发布新的答案。查看新的更新,再次询问您的快速和有用的答案。但是view=dataSource.view()只从网格的第一页获取过滤后的数据。我想获得所有过滤数据(从所有页面)。有可能吗?您可以通过克隆
ds
对象并从中删除分页来实现这一点,这样您就可以在服务器端执行该操作,并返回所有具有所需值的数据。其他解决方案会产生比利润更多的bug。非常感谢,它工作得非常好。有没有办法只包括过滤后剩下的项目?这样做可以防止其他人在问题已经解决的情况下发布新的答案。查看新的更新,再次询问您的快速和有用的答案。但是view=dataSource.view()只从网格的第一页获取过滤后的数据。我想获得所有过滤数据(从所有页面)。有可能吗?您可以通过克隆
ds
对象并从中删除分页来实现这一点,这样您就可以在服务器端执行该操作,并返回所有具有所需值的数据。其他解决方案产生的bug多于利润