Checkbox 如何勾选Telerik剑道网格中的所有复选框
我有一个带复选框列的剑道格网。我想勾选网格中的所有复选框,并将其保留在页面中。我有一个CheckAll()方法,但它只检查剑道网格的第一页。如何通过单击链接或按钮来选中所有复选框?我的代码在这里: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;">
<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>
<a href="#" onclick="uncheckAll();">Uncheck All</a>
<a class="k-button k-button-icontext k-grid-Patient" id="hrefCheckedPatients" href="#" onclick="getChecked();">Export to PDF</a>
<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多于利润