JS控制TreeView的结点选择

yizhihongxing

控制TreeView结点选择的方法主要有以下两种:

  1. 使用JavaScript代码控制TreeView的结点选择

可以通过JS控制TreeView的checkbox,从而实现TreeView的选择控制。具体实现过程如下:

(1)获取TreeView的DOM结构

<asp:TreeView ID="TreeView1" runat="server">
    <Nodes>
        <asp:TreeNode Text="Node1" Value="1">
            <asp:TreeNode Text="Node1-Child1" Value="1-1">
                <asp:TreeNode Text="Node1-Child1-Child1" Value="1-1-1"></asp:TreeNode>
            </asp:TreeNode>
            <asp:TreeNode Text="Node1-Child2" Value="1-2"></asp:TreeNode>
        </asp:TreeNode>
        <asp:TreeNode Text="Node2" Value="2">
            <asp:TreeNode Text="Node2-Child1" Value="2-1"></asp:TreeNode>
        </asp:TreeNode>
    </Nodes>
</asp:TreeView>

(2)使用JavaScript代码获取TreeView的checkbox

var chklist = document.getElementById("<%=TreeView1.ClientID%>").getElementsByTagName("input");
for (var i = 0; i < chklist.length; i++) {
    if (chklist[i].type == "checkbox") {
        chklist[i].onclick = function () {
            var parent = $(this).closest("table").prev("div");
            if ($(this).is(":checked")) {
                parent.addClass("ui-state-active");
            }
            else {
                parent.removeClass("ui-state-active");
            }
        };
    }
}

(3)实现结点的选择控制

var chklist = document.getElementById("<%=TreeView1.ClientID%>").getElementsByTagName("input");
for (var i = 0; i < chklist.length; i++) {
    if (chklist[i].type == "checkbox") {
        chklist[i].onclick = function () {
            var parent = $(this).closest("table").prev("div");
            if ($(this).is(":checked")) {
                parent.addClass("ui-state-active");
            }
            else {
                parent.removeClass("ui-state-active");
            }
            var child = $(this).closest("table").next("table").find(":checkbox");
            child.attr("checked", $(this).is(":checked")).checkboxradio("refresh");
            child.each(function () {
                var parent = $(this).closest("table").prev("div");
                if ($(this).is(":checked")) {
                    parent.addClass("ui-state-active");
                }
                else {
                    parent.removeClass("ui-state-active");
                }
            });
            var parent = $(this).parents(":has(:checkbox)")[0];
            while (parent) {
                var sibling = $(parent).siblings(":has(:checkbox)").find(":checkbox");
                var parent_chk = $(parent).find(":checkbox:first");
                parent_chk.attr("checked", sibling.length > 0 && sibling.filter(":checked").length == sibling.length).checkboxradio("refresh");
                parent = $(parent).parents(":has(:checkbox)")[0];
            }
        };
    }
}
  1. 使用TreeView控件的OnTreeNodeChecked方法控制结点选择

可以在TreeView控件的OnTreeNodeChecked事件中对结点的选择状态进行控制。具体实现过程如下:

(1)定义TreeView控件及其对应的OnTreeNodeChecked方法

<asp:TreeView ID="TreeView1" runat="server" OnTreeNodeChecked="TreeView1_TreeNodeChecked">
    <Nodes>
        <asp:TreeNode Text="Node1" Value="1">
            <asp:TreeNode Text="Node1-Child1" Value="1-1">
                <asp:TreeNode Text="Node1-Child1-Child1" Value="1-1-1"></asp:TreeNode>
            </asp:TreeNode>
            <asp:TreeNode Text="Node1-Child2" Value="1-2"></asp:TreeNode>
        </asp:TreeNode>
        <asp:TreeNode Text="Node2" Value="2">
            <asp:TreeNode Text="Node2-Child1" Value="2-1"></asp:TreeNode>
        </asp:TreeNode>
    </Nodes>
</asp:TreeView> 
protected void TreeView1_TreeNodeChecked(object sender, TreeNodeEventArgs e)
{
    foreach (TreeNode node in e.Node.ChildNodes)
    {
        node.Checked = e.Node.Checked;
        CheckChildNodes(node);
    }
}

private void CheckChildNodes(TreeNode node)
{
    foreach (TreeNode childnode in node.ChildNodes)
    {
        childnode.Checked = node.Checked;
        CheckChildNodes(childnode);
    }
}

(2)在页面中添加相应的JS代码

$(document).ready(function () {
    $(".AspNet-TreeView-ExpandCollapse").click(function () {
        setTimeout(function () {
            $(".AspNet-TreeView-ExpandCollapse").each(function () {
                var img = $(this).find("img:first");
                var src = img.attr("src");
                if (src.indexOf("plus.gif") >= 0) {
                    img.attr("src", src.replace("plus.gif", "minus.gif"));
                }
                else if (src.indexOf("minus.gif") >= 0) {
                    img.attr("src", src.replace("minus.gif", "plus.gif"));
                }
            });
        }, 100);
    });
});

以上就是控制TreeView结点选择的完整攻略及两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS控制TreeView的结点选择 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Javascript调试之console对象——你不知道的一些小技巧

    下面给出完整的“Javascript调试之console对象——你不知道的一些小技巧”攻略。 什么是console对象? console 是一个 Javascript 语言内置的全局对象,提供了很多用于调试和输出信息的方法。 常见的几个方法 log() log() 方法是最常用的方法之一,可以把一些信息打印到控制台。例如: console.log(‘Hell…

    JavaScript 2023年5月28日
    00
  • JavaScript的漂亮的代码片段

    JavaScript的漂亮的代码片段是指在保证实现功能的前提下,代码的可读性、易扩展性等方面都表现出色的代码段。以下是编写漂亮的JavaScript代码片段的一些攻略: 细分代码段 为了提高可读性和可维护性,代码通常需要将不同的任务分成不同的部分。这些部分通常是单独的函数或方法。函数的任务应该足够小,不超过几十行,这样就可以更好地组织代码。有了这个设计,我们…

    JavaScript 2023年6月10日
    00
  • JavaScript实现字符串转数组的6种方法总结

    JavaScript实现字符串转数组的6种方法总结 在JavaScript开发中,我们频繁地使用字符串和数组两种数据类型。当我们需要将字符串转化为数组时,下面将为大家介绍6种常用方法。 方法一:split()函数 split()函数可将字符串按照指定的分隔符进行分割,并将分割后的结果存放在数组中。 const str = "Hello World!…

    JavaScript 2023年5月27日
    00
  • javascript Number 与 Math对象的介绍

    针对“JavaScript Number 与 Math 对象的介绍”的完整攻略,以下为详细说明: JavaScript Number 介绍 JavaScript Number 对象用于在代码中处理数字。JavaScript 中的数字可以是,十进制,二进制,八进制,十六进制和科学计数法。 语法 var x = 123; // 十进制 var x = 0xff;…

    JavaScript 2023年5月28日
    00
  • JS实现将数字金额转换为大写人民币汉字的方法

    下面是JS实现将数字金额转换为大写人民币汉字的方法的完整攻略。 1. 需求分析 首先,我们需要明确我们的需求是将数字金额转换为大写人民币汉字格式,例如将12345.67转换为“壹万贰仟叁佰肆拾伍元陆角柒分”。 2. 算法思路 实现将数字金额转换为大写人民币汉字,需要用到数值分段、数值转换、单位处理等一系列算法。其核心思路为:将待转换的数值从小数点处分割出来,…

    JavaScript 2023年5月28日
    00
  • 5种处理js跨域问题方法汇总

    以下是“5种处理js跨域问题方法汇总”的完整攻略: 1. 什么是跨域问题 跨域问题是指在浏览器端,当脚本试图访问来自不同源(域名、端口、协议)的资源时,会出现安全限制,这就是跨域问题。跨域问题对前端开发影响较大,如果不处理的话,可能会出现一些非常棘手的问题。 2. 为什么会出现跨域问题 跨域问题的产生是因为浏览器出于安全考虑而限制了客户端脚本中发起的跨域HT…

    JavaScript 2023年6月11日
    00
  • JavaScript实现网页带动画返回顶部的方法详解

    JavaScript实现网页带动画返回顶部的方法详解 当我们浏览很长的网页时,我们会发现有时候需要快速回到页面的顶部。通常,我们可以直接点击页面的滚动条或者键盘的 Home 键,但这种方式比较突兀。另外,很多时候我们需要一个能够流畅返回顶部的效果。在这里,我们将详细讲解使用JavaScript实现网页带动画返回顶部的方法。 实现步骤 实现网页带动画返回顶部的…

    JavaScript 2023年6月11日
    00
  • Javascript基础教程之数据类型 (字符串 String)

    Javascript基础教程之数据类型(字符串 String) 什么是字符串? 在JavaScript中,字符串是由任何字符组成的一组字符。字符串可以是字母、数字、标点符号等,甚至可以包含空格或其他特殊字符。字符串是JavaScript中最常用的数据类型之一。 JavaScript中的字符串是Unicode字符集中的16位编码单元序列。这意味着每个字符都是由…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部