kendoUI动态改变grid复选框变单选框
来源:     阅读:919
云上智慧
发布于 2020-04-24 14:29
查看主页

最近遇到一个需求需要动态把grid复选框列变成单选框,先上复选grid代码

复选grid


代码效果

查询了kendoUI的官方文档得到解释

官方文档

查询大佬们博客发现:
selectable :Boolean | String 选中表格的设置,默认false禁止选中,字符串‘row’表示可以选中一行,‘cell’ 表示可以选中一列,‘multiple, row’表示可以选中多行,‘multiple, cell’表示可以选中多列。

所以当时想利用这个属性,来进行动态变化。

方案一? ?通过动态改变grid的selectable属性并重新加载grid来实现复选变单选。

var??selectCheckBox = "multiple,rowbox";

用一个全局变量selectCheckBox来动态改变 grid 属性 selectable: selectCheckBox,

function changeBox(type) {

????if (type == xxx) {

? ? ? ? return "multiple,rowbox”;

????} else {

? ? ? ? return "single,rowbox";

????}

}

用一个函数方法来动态改变 grid 属性 selectable: changeBox(type),

结果发现selectable属性只会在页面载入时候取一次值或者调用一次function函数,后续就算改变全局变量和手动刷新grid也无法触发函数重新调用。我尝试使用$('#company_grid').data('kendoGrid').dataSource.page(1) 和 $('#company_grid').data('kendoGrid').refresh() 去触发grid重新加载,间接重新加载grid的selectable属性,发现没有效果,假如有可以实现重新加载selectable属性的方法请留言告知我,万分感谢!。

方案二? 给复选框绑定点击事件,通过控制事件让勾选失效达到复选变单选。

给grid的标题行复选框增加点击事件,使其失去勾选功能。

$("#company_grid thead>tr th span.k-checkbox").click(function (e) {

? ? return false;

});

给grid的明细行增加绑定事件,但是我一直没有给明细行前复选框绑定上点击事件,在函数中增加console.log()也没有打印。

$("#company_grid tbody td.k-checkbox").click(function (e) {

? ? return false;

});

通过谷歌浏览器查看Jquery选择器能否获取到复选框,发现已获取到,但是仅仅是标题行的有效果,明细行一直没效果。笔者也一直没找到起因,假如有人知道也请留言告知,再次感谢!。

谷歌控制台

方案三? 因为前面方案总是棋差一招,只能剑走偏锋。创立两个grid一个selectable属性是多选,另一个grid的selectable属性是单选。两个grid同时绑定一个数据源,保证数据统一,根据选择条件隐藏一个,显示一个。

单选gridHTML设置函数设置

至此单复选框的动态切换就实现了,这种实现方式比较Low但是效果达到了,假如有大佬有好的实现方式,请留言告知。

参考文章链接:

官方文档

https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/configuration/columns.selectable

博客文档

https://blog.csdn.net/qq_35611143/article/details/81485551

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
linux  定时任务相关操作
「二」浏览器的渲染流程及组成【必会!】
不常用但你需要眼熟的一个CSS
关于用设计模式刷 LeetCode 这件事
Linux三剑客之sed命令详解,小白也能看得懂!
首页
搜索
订单
购物车
我的