有关treeview的checkbox,折磨了我三天,忘各位帮忙解决,100分!

kodsummer 2007-04-18 07:16:46
一个treeview1,有两个根节点ROOT1和ROOT2,属性enable showcheckbox设成true,如下

treeview1

ROOT1
A
B
C
D
E
ROOT2
B
A
K
O
L

如何让ROOT1的某项的checkbox选中时,ROOT2的相同项也选中,而当ROOT1的某项取消时,ROOT2的相同项也取消选中!比如选中A,那么ROOT2的A也选中,而取消ROOT2中的A,ROOT1的A也取消选中,反之亦然。需要用javascript,求详细代码,感激不尽!
...全文
319 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainmanxu94 2007-04-19
  • 打赏
  • 举报
回复
mark
zhenjiaobing 2007-04-19
  • 打赏
  • 举报
回复
帮顶!
cpp2017 2007-04-18
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="tvJs.aspx.cs" Inherits="TreeView_tvJs" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <asp:TreeView ID="TreeView1" onclick="javascript:GoCheck();" runat="server" ShowCheckBoxes="All"> <Nodes> <asp:TreeNode Text="Root1" Value="Root1"> <asp:TreeNode Text="A" Value="A"></asp:TreeNode> <asp:TreeNode Text="B" Value="B"></asp:TreeNode> <asp:TreeNode Text="C" Value="C"></asp:TreeNode> <asp:TreeNode Text="D" Value="D"></asp:TreeNode> <asp:TreeNode Text="E" Value="E"></asp:TreeNode> </asp:TreeNode> <asp:TreeNode Text="Root2" Value="Root2"> <asp:TreeNode Text="B" Value="B"></asp:TreeNode> <asp:TreeNode Text="A" Value="A"></asp:TreeNode> <asp:TreeNode Text="K" Value="K"></asp:TreeNode> <asp:TreeNode Text="L" Value="L"></asp:TreeNode> <asp:TreeNode Text="O" Value="O"></asp:TreeNode> </asp:TreeNode> </Nodes> </asp:TreeView> </form> </body> </html> <script type="text/javascript"> function GoCheck() { if(event.srcElement.tagName.toLowerCase() != "input") return; var objThis = event.srcElement; var objs = document.getElementsByTagName("input"); for(var i=0;i<objs.length;i++) { if(objs[i].type == "checkbox") { if(objs[i].nextSibling.innerText == objThis.nextSibling.innerText) { objs[i].checked = objThis.checked; } } } } </script>
sonyw830 2007-04-18
  • 打赏
  • 举报
回复
来个遍历不就可以了吗?先取到您选中的项,然后一个一个去比较。
babyrockxray 2007-04-18
  • 打赏
  • 举报
回复
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeView1.Attributes.Add("onclick", "return clickTreeNode(this)");

TreeNode root1 = new TreeNode();
root1.Text = "Root1";
root1.ShowCheckBox = true;
root1.SelectAction = TreeNodeSelectAction.Expand;
GenerateChildren1(root1);
TreeView1.Nodes.Add(root1);

TreeNode root2 = new TreeNode();
root2.Text = "Root2";
root2.ShowCheckBox = true;
root2.SelectAction = TreeNodeSelectAction.Expand;
GenerateChildren2(root2);
TreeView1.Nodes.Add(root2);
}
}

private void GenerateChildren1(TreeNode parent)
{
string[] ts = { "a", "b", "c", "d", "e" };
foreach (string s in ts)
{
this.MakeChild(s, parent);
}
}
private void MakeChild(string text, TreeNode parent)
{
TreeNode node = new TreeNode();
node.Text = text;
node.ShowCheckBox = true;
node.SelectAction = TreeNodeSelectAction.Expand;

parent.ChildNodes.Add(node);
}
private void GenerateChildren2(TreeNode parent)
{
string[] ts = { "b", "c", "a", "d", "e" };
foreach (string s in ts)
{
this.MakeChild(s,parent);
}
}
}
babyrockxray 2007-04-18
  • 打赏
  • 举报
回复
写了一个简单的,你看看能不能用:
aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function clickTreeNode(tree)
{
var cb = window.event.srcElement;
if(typeof(cb.type) != "undefined" && cb.type != "checkbox")
return;
var value = cb.parentElement.innerText;

for(var i=0;i<tree.childNodes.length;i+=2)
{
var cbs = tree.childNodes[i+1].getElementsByTagName("INPUT");
for(var m=0;m<cbs.length;m++)
{
if(cbs[m].type == "checkbox" && cbs[m].parentElement.innerText == value)
{
cbs[m].checked = cb.checked;
}
}

}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
</div>
</form>
</body>
</html>
suiqirui19872005 2007-04-18
  • 打赏
  • 举报
回复
沙发,友情up

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧