JS控制TreeView的结点选择

控制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三大重点同步异步与作用域和闭包及原型和原型链详解

    一、同步异步 JavaScript代码的执行分为同步和异步两种方式。同步是指代码执行的顺序和书写顺序一致,代码执行时必须等待上一行执行完成,才执行下一行。异步是指代码执行的顺序和书写顺序不一致,可以在等待某些操作完成时执行其他代码,操作完成时再回调执行。 JavaScript的异步编程实现有两种方式:1. 回调函数2. Promise 其中Promise是回…

    JavaScript 2023年5月28日
    00
  • javascript中的注释使用与注意事项小结

    当我们编写Javascript代码时,除了编写实际的功能代码,还会添加注释来帮助我们理解代码并使别人也能理解代码。在本篇攻略中,我将详细讲解Javascript中注释的使用和注意事项。 注释的基本语法 Javascript支持两种类型的注释:单行注释和多行注释。 单行注释 单行注释用于在一行代码中添加注释。在单行注释的开头使用两个斜杠(//)表示,接着添加注…

    JavaScript 2023年6月11日
    00
  • Javascript数组方法reduce的妙用之处分享

    关于“Javascript数组方法reduce的妙用之处分享”的完整攻略,我将从以下几个方面进行讲解: 什么是reduce方法 reduce方法的用法和语法 reduce方法的妙用之处 两个示例说明 1. 什么是reduce方法 reduce() 是一种 Javascript 数组方法,用于迭代数组中的所有元素,并通过一个函数返回单个值。这个函数接受四个参数…

    JavaScript 2023年5月27日
    00
  • JavaScript Event学习第七章 事件属性

    下面给你详细讲解 JavaScript Event 学习第七章 事件属性的完整攻略。 事件属性 事件属性是针对事件对象提供的属性,通过这些属性可以获取事件的各种信息。下面是常见的事件属性: 1. type type属性用于返回事件类型,是必需的。例如: element.addEventListener(‘click’, function(event) { c…

    JavaScript 2023年6月11日
    00
  • 详解VueRouter 路由

    详解 VueRouter 路由 VueRouter 是 Vue.js 的官方路由管理器,它可以将不同的 URL 地址映射到不同的组件,并且在组件之间进行快速切换和传递数据。在本文中,我们将详细讲解 VueRouter 的使用方法,包括安装、基本用法、动态路由、嵌套路由等内容。 安装 安装 VueRouter 非常简单,只需要在终端中运行以下命令: npm i…

    JavaScript 2023年6月11日
    00
  • js函数柯里化的方法和作用实例分析

    下面是 JS 函数柯里化的方法和作用实例分析的攻略: 什么是函数柯里化 函数柯里化是一种将接受多个参数的函数转换为接受一个单一参数的函数,并返回一个新的函数的技术。这个新函数能够接着接受剩下的参数,直到接收到所有参数为止。 举个例子,假设有一个 sum 函数可以接受多个数值参数: function sum(a, b, c) { return a + b + …

    JavaScript 2023年5月28日
    00
  • js中forEach,for in,for of循环的用法示例小结

    请看下面的文本。 js中forEach,for in,for of循环的用法示例小结 在JavaScript中,有多种迭代数组和对象的方式。 下面是三种常见的循环的用法: forEach,for in,和for of。接下来将详细介绍它们的用法和示例。 forEach循环 JavaScript中的forEach()方法用于迭代逐个数组元素,并为每个元素执行回…

    JavaScript 2023年5月28日
    00
  • GridView选择记录同时confirm用户确认删除

    GridView选择记录同时confirm用户确认删除 简介 由于GridView是ASP.NET Web Forms常用的控件之一,经常会被用来展示和编辑自定义数据源。在开发中,经常会遇到用户想要删除某一项记录的需求。这时候,我们需要使用JavaScript来先确认用户是否真正想要删除该记录。 步骤 第一步:在GridView中添加CheckBox列 我们…

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