treeview有关的几个问题? 如果词节点被选中,则父亲被选中,这是不可能的,因为checkbox的父亲不可能是checkbox把问题描述清楚了再来吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 所有的节点都有checkbox ,是父亲的checkbox 被选中。 这个问题很老了,你用的是.net中的,treeview 还是自己用js写的tree阿? 第二个问题,不刷新 可以用icallbackhandle 或者用ajax .net2005中的 <asp:TreeView ID="RoleTreeView" runat="server" ShowCheckBoxes="All" onclick="javascript:OnTreeNodeChecked()" AutoGenerateDataBindings="false" > </asp:TreeView>第一个问题解决了。只剩下第二个问题。回四楼的根本就没有任何后台事件,用ajax做什么,只是想点击节点的时候让页面没有任何反应。 JS文件:var parentNodeCount = 0;var nodeCount = 0;function onParentNodeImageClick(node) { var divNode = document.getElementById(node.name.replace("parentNodeImage","parentNodeDiv")); var imageNode = node; if (divNode.style.display == "none"){ imageNode.src = "minus.png"; divNode.style.display = ""; } else { imageNode.src = "plus.png"; divNode.style.display = "none"; }}前台代码:<link href="tree.css" rel="stylesheet" type="text/css" /><script src="tree.js" type="text/javascript"></script><title>TreeView Example</title></head><body><div id="treeview"></div><script language="javascript"> addExpandCollapseAll(); addNode("WickedOrange.com","http://www.wickedorange.com","mainFrame"); startParentNode("Search Engines"); addNode("Google","http://www.google.com","mainFrame"); addNode("Yahoo","http://www.yahoo.com","mainFrame"); endParentNode(); startParentNode("Dev Sites"); addNode("CodeProject","http://www.codeproject.com","mainFrame"); addNode("MSDN","http://www.msdn.com","mainFrame"); startParentNode("Dev Sites"); addNode("CodeProject","http://www.codeproject.com","mainFrame"); addNode("MSDN","http://www.msdn.com","mainFrame"); startParentNode("Dev Sites"); addNode("CodeProject","http://www.codeproject.com","mainFrame"); addNode("MSDN","http://www.msdn.com","mainFrame"); endParentNode(); endParentNode(); endParentNode();</script>function onParentNodeTextClick(node) { var divNode = document.getElementById(node.name.replace("parentNodeText","parentNodeDiv")); var imageNode = document.getElementsByName(node.name.replace("parentNodeText","parentNodeImage"))[0]; if (divNode.style.display == 'none') { imageNode.src = "minus.png"; divNode.style.display = ''; } else { imageNode.src = "plus.png"; divNode.style.display = 'none'; }}function onNodeTextClick(node) { var imageNode = document.getElementsByName(node.name.replace("nodeText","nodeImage"))[0]; setSelectedNode(imageNode);}function onNodeImageClick(node, url, target){ var imageNode = node setSelectedNode(imageNode);}function setSelectedNode(imageNode){ for (index = 0; index < this.nodeCount; index++) { document.getElementsByName("nodeImage" + index)[0].src = "page.png"; } imageNode.src = "pageSelected.png";}function expandAll(){ for (index = 0; index < this.parentNodeCount; index++) { document.getElementById("parentNodeDiv" + index).style.display = ""; document.getElementsByName("parentNodeImage" + index)[0].src = "minus.png"; }}function collapseAll(){ for (index = 0; index < this.parentNodeCount; index++) { document.getElementById("parentNodeDiv" + index).style.display = "none"; document.getElementsByName("parentNodeImage" + index)[0].src = "plus.png"; }}function startParentNode(text){ document.write('<table border="0" cellpadding="1" cellspacing="0">'); document.write(' <tr>'); document.write(' <td><img src="plus.png" name="parentNodeImage' + parentNodeCount + '" onclick="onParentNodeImageClick(this)" style="cursor:pointer;"/></td>'); document.write(' <td><a class="parentTreeNode" name="parentNodeText' + parentNodeCount + '" onclick="onParentNodeTextClick(this);" style="cursor:pointer;">'); document.write(text); document.write('</a>'); document.write(' </td>'); document.write(' </tr>'); document.write(' <tr>'); document.write(' <td></td><!-- SPACING -->'); document.write(' <td><DIV id="parentNodeDiv' + parentNodeCount + '" style="display:none">'); this.parentNodeCount = this.parentNodeCount + 1;}function endParentNode(){ document.write('</DIV></td>'); document.write(' </tr>'); document.write('</table>');}function addNode(text, url, target){ document.write('<table border="0" cellpadding="1" cellspacing="0">'); document.write(' <tr>'); document.write(' <td>'); document.write('<a href="' + url + '" target="' + target + '" onfocus="this.hideFocus=true;" style="outline-style:none;">'); document.write('<img src="page.png" border="0" name="nodeImage' + this.nodeCount + '" onclick="onNodeImageClick(this);" />'); document.write('</a>'); document.write(' </td>'); document.write(' <td><a name="nodeText' + this.nodeCount + '" onclick="onNodeTextClick(this);" href="' + url + '" target="' + target + '" class="normalTreeNode" onfocus="this.hideFocus=true;" style="outline-style:none;">' + text + '</a></td>'); document.write(' </tr>'); document.write('</table>'); this.nodeCount = this.nodeCount + 1;}function addExpandCollapseAll(){ document.write('<table width="100%" border="0">'); document.write(' <tr>'); document.write(' <td align="right" width="50%"><a onclick="expandAll();" class="expandCollapse" style="cursor:pointer;">Expand All</a></td>'); document.write(' <td alight="left" width="50%"><a onclick="collapseAll();" class="expandCollapse" style="cursor:pointer;">Collapse All</a></td>'); document.write(' </tr>'); document.write('</table>'); } cs: protected void Page_Load(object sender, EventArgs e) { this.TreeView1.Attributes.Add("onclick", "CheckEvent()"); }js: <script language="javascript"> function public_GetParentByTagName(element, tagName) { var parent = element.parentNode; var upperTagName = tagName.toUpperCase(); //如果这个元素还不是想要的tag就继续上溯 while (parent && (parent.tagName.toUpperCase() != upperTagName)) { parent = parent.parentNode ? parent.parentNode : parent.parentElement; } return parent; } //设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问 function setParentChecked(objNode) { var objParentDiv = public_GetParentByTagName(objNode,"div"); if(objParentDiv==null || objParentDiv == "undefined") { return; } var objID = objParentDiv.getAttribute("ID"); objID = objID.substring(0,objID.indexOf("Nodes")); objID = objID+"CheckBox"; var objParentCheckBox = document.getElementById(objID); if(objParentCheckBox==null || objParentCheckBox == "undefined") { return; } if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox") return; objParentCheckBox.checked = true; setParentChecked(objParentCheckBox); } //设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问 function setChildUnChecked(divID) { var objchild = divID.children; var count = objchild.length; for(var i=0;i<objchild.length;i++) { var tempObj = objchild[i]; if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox") { tempObj.checked = false; } setChildUnChecked(tempObj); } } //设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问 function setChildChecked(divID) { var objchild = divID.children; var count = objchild.length; for(var i=0;i<objchild.length;i++) { var tempObj = objchild[i]; if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox") { tempObj.checked = true; } setChildChecked(tempObj); } } //触发事件 function CheckEvent() { var objNode = event.srcElement; if(objNode.tagName!="INPUT" || objNode.type!="checkbox") return; if(objNode.checked==true) { setParentChecked(objNode); var objID = objNode.getAttribute("ID"); var objID = objID.substring(0,objID.indexOf("CheckBox")); var objParentDiv = document.getElementById(objID+"Nodes"); if(objParentDiv==null || objParentDiv == "undefined") { return; } setChildChecked(objParentDiv); } else { var objID = objNode.getAttribute("ID"); var objID = objID.substring(0,objID.indexOf("CheckBox")); var objParentDiv = document.getElementById(objID+"Nodes"); if(objParentDiv==null || objParentDiv == "undefined") { return; } setChildUnChecked(objParentDiv); } } </script>把 js这部分放在aspx中,就可以了。刚才我还以为你会在后台进行操作呢 ^-^ 楼上的不行有错误,而且我已经用onclick()调用一个脚本解决第一个问题了!有没有什么办法让节点的文字不能点击! 现在还想实现一个节点的checkbox始终是选中的状态不可更改怎么实现! 求个挺简单的正则表达式 js问题 头疼啊 关于js实现保存文件对话框的问题 appendChild 与ie6下在iframe中的操作问题 正则表达式 匹配图片地址有效地址 js增加信任站点后的问题 高手帮忙看看 [急求解]关于userData的急手问题! 大家试试这个,如何不弹出就能打印浏览 request.getParameterValues()取不到值 如何访问IFRAME里的元素 lihui_shine ,你的类似于QQ的web聊天器写的怎么样了?
<asp:TreeView ID="RoleTreeView" runat="server" ShowCheckBoxes="All" onclick="javascript:OnTreeNodeChecked()" AutoGenerateDataBindings="false" >
</asp:TreeView>
第一个问题解决了。
只剩下第二个问题。
回四楼的根本就没有任何后台事件,用ajax做什么,只是想点击节点的时候让页面没有任何反应。
var nodeCount = 0;function onParentNodeImageClick(node) {
var divNode = document.getElementById(node.name.replace("parentNodeImage","parentNodeDiv"));
var imageNode = node; if (divNode.style.display == "none"){
imageNode.src = "minus.png";
divNode.style.display = "";
}
else {
imageNode.src = "plus.png";
divNode.style.display = "none";
}
}前台代码:
<link href="tree.css" rel="stylesheet" type="text/css" />
<script src="tree.js" type="text/javascript"></script><title>TreeView Example</title></head><body>
<div id="treeview"></div>
<script language="javascript">
addExpandCollapseAll(); addNode("WickedOrange.com","http://www.wickedorange.com","mainFrame"); startParentNode("Search Engines");
addNode("Google","http://www.google.com","mainFrame");
addNode("Yahoo","http://www.yahoo.com","mainFrame");
endParentNode(); startParentNode("Dev Sites");
addNode("CodeProject","http://www.codeproject.com","mainFrame");
addNode("MSDN","http://www.msdn.com","mainFrame");
startParentNode("Dev Sites");
addNode("CodeProject","http://www.codeproject.com","mainFrame");
addNode("MSDN","http://www.msdn.com","mainFrame");
startParentNode("Dev Sites");
addNode("CodeProject","http://www.codeproject.com","mainFrame");
addNode("MSDN","http://www.msdn.com","mainFrame");
endParentNode();
endParentNode();
endParentNode();</script>
function onParentNodeTextClick(node) {
var divNode = document.getElementById(node.name.replace("parentNodeText","parentNodeDiv"));
var imageNode = document.getElementsByName(node.name.replace("parentNodeText","parentNodeImage"))[0]; if (divNode.style.display == 'none') {
imageNode.src = "minus.png";
divNode.style.display = '';
}
else {
imageNode.src = "plus.png";
divNode.style.display = 'none';
}
}function onNodeTextClick(node) {
var imageNode = document.getElementsByName(node.name.replace("nodeText","nodeImage"))[0];
setSelectedNode(imageNode);
}
function onNodeImageClick(node, url, target){
var imageNode = node
setSelectedNode(imageNode);
}function setSelectedNode(imageNode){
for (index = 0; index < this.nodeCount; index++) {
document.getElementsByName("nodeImage" + index)[0].src = "page.png";
}
imageNode.src = "pageSelected.png";
}
function expandAll(){
for (index = 0; index < this.parentNodeCount; index++) {
document.getElementById("parentNodeDiv" + index).style.display = "";
document.getElementsByName("parentNodeImage" + index)[0].src = "minus.png";
}
}
function collapseAll(){
for (index = 0; index < this.parentNodeCount; index++) {
document.getElementById("parentNodeDiv" + index).style.display = "none";
document.getElementsByName("parentNodeImage" + index)[0].src = "plus.png";
}
}function startParentNode(text){
document.write('<table border="0" cellpadding="1" cellspacing="0">');
document.write(' <tr>');
document.write(' <td><img src="plus.png" name="parentNodeImage' + parentNodeCount + '" onclick="onParentNodeImageClick(this)" style="cursor:pointer;"/></td>');
document.write(' <td><a class="parentTreeNode" name="parentNodeText' + parentNodeCount + '" onclick="onParentNodeTextClick(this);" style="cursor:pointer;">');
document.write(text);
document.write('</a>');
document.write(' </td>');
document.write(' </tr>');
document.write(' <tr>');
document.write(' <td></td><!-- SPACING -->');
document.write(' <td><DIV id="parentNodeDiv' + parentNodeCount + '" style="display:none">');
this.parentNodeCount = this.parentNodeCount + 1;
}
function endParentNode(){
document.write('</DIV></td>');
document.write(' </tr>');
document.write('</table>');
}
function addNode(text, url, target){
document.write('<table border="0" cellpadding="1" cellspacing="0">');
document.write(' <tr>');
document.write(' <td>');
document.write('<a href="' + url + '" target="' + target + '" onfocus="this.hideFocus=true;" style="outline-style:none;">');
document.write('<img src="page.png" border="0" name="nodeImage' + this.nodeCount + '" onclick="onNodeImageClick(this);" />');
document.write('</a>');
document.write(' </td>');
document.write(' <td><a name="nodeText' + this.nodeCount + '" onclick="onNodeTextClick(this);" href="' + url + '" target="' + target + '" class="normalTreeNode" onfocus="this.hideFocus=true;" style="outline-style:none;">' + text + '</a></td>');
document.write(' </tr>');
document.write('</table>');
this.nodeCount = this.nodeCount + 1;
}
function addExpandCollapseAll(){
document.write('<table width="100%" border="0">');
document.write(' <tr>');
document.write(' <td align="right" width="50%"><a onclick="expandAll();" class="expandCollapse" style="cursor:pointer;">Expand All</a></td>');
document.write(' <td alight="left" width="50%"><a onclick="collapseAll();" class="expandCollapse" style="cursor:pointer;">Collapse All</a></td>');
document.write(' </tr>');
document.write('</table>');
}
protected void Page_Load(object sender, EventArgs e)
{
this.TreeView1.Attributes.Add("onclick", "CheckEvent()");
}
js:
<script language="javascript">
function public_GetParentByTagName(element, tagName)
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
//如果这个元素还不是想要的tag就继续上溯
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
function setParentChecked(objNode)
{
var objParentDiv = public_GetParentByTagName(objNode,"div");
if(objParentDiv==null || objParentDiv == "undefined")
{
return;
}
var objID = objParentDiv.getAttribute("ID");
objID = objID.substring(0,objID.indexOf("Nodes"));
objID = objID+"CheckBox";
var objParentCheckBox = document.getElementById(objID);
if(objParentCheckBox==null || objParentCheckBox == "undefined")
{
return;
}
if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
return;
objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
}
//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
function setChildUnChecked(divID)
{
var objchild = divID.children;
var count = objchild.length;
for(var i=0;i<objchild.length;i++)
{
var tempObj = objchild[i];
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
{
tempObj.checked = false;
}
setChildUnChecked(tempObj);
}
}
//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
function setChildChecked(divID)
{
var objchild = divID.children;
var count = objchild.length;
for(var i=0;i<objchild.length;i++)
{
var tempObj = objchild[i];
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
{
tempObj.checked = true;
}
setChildChecked(tempObj);
}
}
//触发事件
function CheckEvent()
{
var objNode = event.srcElement;
if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
return;
if(objNode.checked==true)
{
setParentChecked(objNode);
var objID = objNode.getAttribute("ID");
var objID = objID.substring(0,objID.indexOf("CheckBox"));
var objParentDiv = document.getElementById(objID+"Nodes");
if(objParentDiv==null || objParentDiv == "undefined")
{
return;
}
setChildChecked(objParentDiv);
}
else
{
var objID = objNode.getAttribute("ID");
var objID = objID.substring(0,objID.indexOf("CheckBox"));
var objParentDiv = document.getElementById(objID+"Nodes");
if(objParentDiv==null || objParentDiv == "undefined")
{
return;
}
setChildUnChecked(objParentDiv);
}
}
</script>
把 js这部分放在aspx中,就可以了。刚才我还以为你会在后台进行操作呢 ^-^
有没有什么办法让节点的文字不能点击!