zoukankan      html  css  js  c++  java
  • 设置kendo ui TreeView控件显示半选状态的记录

    原因:

      treeview的数据源比较大,如果子级同时包含选中的项和未选中的项,那么父级应该是“半选”的状态,如下图:

      

       但是默认情况下,直接把数据给treeView以后,他不会显示半选,如下图:

      

       虽然子级有一个未选中的项,但是在文件夹不展开的情况下,他显示的是未选中,必须全部展开的情况下才会正常,或者使用下面的方法调用才会正常:

    var treeview = $("#treeview").data("kendoTreeView");
    treeview.updateIndeterminate();

      但是如果数据量大,不管是展开或是调用上面的那个方法,速度都会很慢,我们这里测试的,得有几十秒的时间等待。

     解决方案:

      在databind方法里手工处理一下半选中的状态,示例如下:

              dataBound: function(e) {
                        updateTree();
                      }
      function updateTree() 
      {
        $('input:checkbox').each(function(){
          var item=$(this)[0];
          item.indeterminate = true;
        });
      };

    上面的方法是把所有的checkbox转换为“半选”的状态。

    实际工作中,只要把需要“半选”的节点告诉treeView就可以了

      

            function updateTree() {
                var treeView = $('#treeViewCaseFolder').data('kendoTreeView');
                for (var i = 0; i < indeterminateList.length; i++) {
                    var data = treeView.dataSource.get(indeterminateList[i]);
                    if (data) {
                        var selectitem = treeView.findByUid(data.uid);
                        selectitem.find("input:checkbox")[0].indeterminate = true;
                    }
                }
            };
    上面代码中的indeterminateList这个变量就是需要改为“半选”状态的所有数据的id。
  • 相关阅读:
    POJ 3417 Network
    指针动态开空间的板子
    fread()的板子
    luguo P1970 花匠
    Uva
    Uva
    Uva
    Uva
    Uva
    什么才算是真正的编程能力?
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/13832204.html
Copyright © 2011-2022 走看看