1。VS2005 中的TreeView 怎么设置使得节点没有超链接?
默认的有超链接,比较烦。2。VS2005 中的TreeView 怎么用JS得到选中CheckBox节点的Value?
我怎么取都取不到,Text我可以取到,怎么才能取到Value?3。选中一节点其子节全选,其父节点也选中,用JS明天如果三个问题都有答案就结帐,谢谢各位。。
2003和2005的树差别太大了,好郁闷
默认的有超链接,比较烦。2。VS2005 中的TreeView 怎么用JS得到选中CheckBox节点的Value?
我怎么取都取不到,Text我可以取到,怎么才能取到Value?3。选中一节点其子节全选,其父节点也选中,用JS明天如果三个问题都有答案就结帐,谢谢各位。。
2003和2005的树差别太大了,好郁闷
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
TreeView1.Attributes.Add("onclick", "OnClientTreeNodeChecked(event)");
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Request.Form["CheckedNode"] != null)
{
string CheckedNodeValue = Request.Form["CheckedNode"];
if (CheckedNodeValue == "")
return;
if (CheckedNodeValue.EndsWith(","))
CheckedNodeValue = CheckedNodeValue.TrimEnd(',');
Response.Write("您选择的节点有:"+CheckedNodeValue);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script type="text/javascript" language="javascript">
//识别不同的浏览器
function getTargetElement(evt) {
var elem
if (evt.target)
{
elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target
}
else
{
elem = evt.srcElement
}
return elem
}
function OnClientTreeNodeChecked(evt)
{
evt = (evt) ? evt : ((window.event) ? window.event : "");
if(evt == "")
{
return;
}
var obj = getTargetElement(evt);
var hasTreeNode = false;
if(obj.tagName)
{
if (obj.tagName == "INPUT" && obj.type == "checkbox") {
var treeNode = obj;
while (obj.tagName != "TABLE")
{
obj = obj.parentNode;
}
var parentTreeDeep = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
var oDiv = obj.parentNode;
if( null == oDiv )
{
return;
}
if( 1 != oDiv.nodeType)
{
return;
}
var tables = oDiv.getElementsByTagName("TABLE");
if( null == tables)
{
return;
}
var tableCount = tables.length;
if(tableCount < 1)
{
return;
}
for (i = 0; i < tableCount; i++)
{
if ( obj == tables[i] )
{
hasTreeNode = true;
i++;
if (tableCount == i )
{
return;
}
}
if (hasTreeNode)
{
var childTreeDeep = tables[i].rows[0].cells.length;
if (childTreeDeep > parentTreeDeep)
{
var cellTreeNode = tables[i].rows[0].cells[childTreeDeep - 1];
var inputs = cellTreeNode.getElementsByTagName("INPUT");
if( null != inputs)
{
inputs[0].checked = treeNode.checked;
}
}
else
{
return;
}
}
}
}
}
}
function ShowCheckbox()
{
var TreeView = "<%=TreeView1.ClientID %>"
var checkNode = document.getElementById("CheckedNode")
var checkboxs = document.getElementById(TreeView).getElementsByTagName("INPUT")
for(i=0;i<checkboxs.length;i++)
{
if(checkboxs[i].type == "checkbox"
&& checkboxs[i].name.substr(0,TreeView.length) == TreeView
&& checkboxs[i].checked )
{
checkNode.value += checkboxs[i].title + ","
}
}
alert(checkNode.value)
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:TreeView ID="TreeView1" runat="server" ShowLines="true"
ShowCheckBoxes="All">
<Nodes>
<asp:TreeNode Text="【孟子E章】站点一" SelectAction="SelectExpand">
<asp:TreeNode Text="ASP.NET技术">
<asp:TreeNode Text="缓存管理"/>
<asp:TreeNode Text="状态管理" />
<asp:TreeNode Text="导航控件">
<asp:TreeNode Text="Menu 服务器控件" />
<asp:TreeNode Text="SiteMapPath 服务器控件" />
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="C#技术" />
</asp:TreeNode>
<asp:TreeNode Text="【孟子E章】站点二" />
<asp:TreeNode Text="【孟子E章】站点三">
<asp:TreeNode Text="Web开发技术" />
<asp:TreeNode Text="Web脚本库" />
</asp:TreeNode>
</Nodes>
</asp:TreeView>
<input type="hidden" name="CheckedNode" id="CheckedNode"/>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
OnClientClick="ShowCheckbox();" Text="提交" />
</form>
</body>
</html>
2 value存在viewstate中,用js取不到
function public_GetParentByTagName(element, tagName)
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
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);
}
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);
}
} 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 CheckHandler()
{
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);
}
}
我怎么取都取不到,Text我可以取到,怎么才能取到Value?用JS真的取不到Value值吗?