• (3)kendo UI使用基础介绍与问题整理——Grid问题/ Checkbox selection


          kendo UI的grid提供了选中行的功能,先上一张官网的截图:

    一、简单说明  

        selectable 可选参数
    • "row" - the user can select a single row. 行
    • "cell" - the user can select a single cell. 项
    • "multiple, row" - the user can select multiple rows. 多行
    • "multiple, cell" - the user can select multiple cells. 多项

         

         通常使用选择的时候,用法是 selectable: true 这个时候可以使用行选中。
     
         上面说的选择是变色的那种选中。如何需要的是checkbox选中,那么需要设置
         persistSelection: true,
         columns:[{ selectable:true}]
     
         行选中和checkbox选中不可以同时使用,会存在冲突,实际需要的时候需要自定义,在我做的项目中需要两种功能并存的时候,使用的是自定义行选中,checkbox使用grid提供的方法。

    二、行选中和checkbox选中并存时的处理

          下面是我自定义的点击行 然后选中行的事件
    //点击行选中事件
    $("#grid").on("click", "tbody tr[role='row'] td", function () {
        if ($(this).html().indexOf("k-checkbox") < 0) {//判断点击项是不是checkbox,不是的情况下再进行行选中的操作
            $("#grid tr").removeClass("chooseRow");
            $(this).parent().addClass("chooseRow"); //添加行选中的样式
            var index = $(this).parent().index();   //获取选中行的下标
            var selectedId = $("#grid").data("kendoGrid").dataSource.at(index).Id;  //获取选中行的ID
        }
    
    });

        可以从代码中了解到,是通过chooseRow这个class标志选中行的,同时我给带有chooseRow的行设置了样式。

       上面实现的是行选中的单选。也可以自己通过对上面方法的修改实现多选。

    三、checkbox实现单选

             实现这个功能,首先要去掉全选的checkbox,代码如下:

    //加载grid列表加载的后面
    $("input[aria-label='Select all rows']").next(".k-checkbox-label").remove();
    $("input[aria-label='Select all rows']").remove();

          然后在点击checkbox的时候做判断,实现只能选中一行

    // 单选
    $(document).on("click", "#grid tbody tr[role='row'] td", function () {
            var index = $(this).parent().index();   //获取选中行的下标
            var grid = $("#grid").data("kendoGrid");
            grid.select("tr:eq(" +index + ")");
            var localCheck = $("#grid").find(".k-checkbox:checked"); 
            if(localCheck.length > 1) {
               grid.clearSelection();
               grid.select("tr:eq(" +index + ")");
            }
    });

    四、selection相关方法

    (1)指定某一行进行选中的方法

    //方法1:
    var grid = $("#grid").data("kendoGrid");
    grid.select("tr:eq(0)");
    
    //方法2:
    var grid = $("#grid").data("kendoGrid");
    var uid = grid.dataSource.at(0).uid;
    grid.select("tr[data-uid='" + uid + "']");

     (2)输出选中数据的方法

    //方法一:
    var grid = $("#grid").data("kendoGrid");
    grid.select();    //输出选中行的数据(当前页)
    
    //方法二:
    var grid = $("#grid").data("kendoGrid");
    console.log(grid.selectedKeyNames());        //输出选中行的关键字(支持分页) 注: 要求这个grid必须设置schema的model,输出的选中项数据就是model设定的值,如mode设置的是id,那么输出的值就是选中行的id值。

     (3)清除选中项

    //方法一:
    var grid = $("#grid").data("kendoGrid");
    grid.clearSelection();    //只能清除当前页的选中项
    
    //方法二:
    var grid = $("#grid").data("kendoGrid");
    grid._selectedIds={};    //可以清除所有页的选中项

     不过在实际应用中,会发现上面清除选中项的“方法二”,存在无法清除当前页面选中样式的问题,所以,我配合使用了grid.clearSelection()。

     
  • 相关阅读:
    按输入行数,输出对应的倒等腰三角形星星
    按输入行、列数,输出对应的矩形星星
    运算程序,计算玩判断,Y继续,重复计算,N结束
    输入年 月 日 ,计算时该年的第几天
    for计算100以内的奇数和
    创建一个Android项目
    菜鸟大充电啦啦啦啦啦:百度上的安卓学习资料以及我的视频学习资料
    菜鸟大充电啦啦啦啦啦:eclipse SDK 是什么啊
    学习过程的记录:实验室电脑上的jdk环境变量
    WHAT is CPU负载?
  • 原文地址:https://www.cnblogs.com/lindaCai/p/8252146.html
Copyright © 2020-2023  润新知