有那位高人知道asp2.0中用javascript如何循环的去读取treeview中所有父节点的value和text(只有两层,没有根,不读取树叶)
解决方案 »
- 小白求助如何在页面间传递多个参数?急急急
- 怎么用TreeView和GridView联动做出类似资源管理器那样的效果
- sqlhelp使用的问题,报错:SqlHelper 类型初始值设定项引发异常
- 提问:用ASP.NET C#(高性能)过滤非法的关键字
- c#调用oracle储存过程,返回字符串!
- 请问一个水晶报表的问题
- 分析器错误消息: “asp:ListItem”的“Text”属性不允许子对象。
- 关于C#正则采集网站内容的问题
- 我的datalist 中的RepeatColumns="2",可是为什么显示起来确是这两个例不一样宽?
- pop3收下邮件后内容编码的转换问题
- 请大家帮忙看看
- 如何把别表的数据sum然后存到另一个表中。
treeview 的节点的ID 生成后都是 treeview 的 ID + "n" + 节点的序号如:
treeview的ID "treeview1" 前面那个图片的ID 节点ID
**** "treeview1" + "n" + 0 "treeview1" + "t" + 0
**** "treeview1" + "n" + 1 "treeview1" + "t" + 1
**** "treeview1" + "n" + 2 "treeview1" + "t" + 1
**** "treeview1" + "n" + 3 "treeview1" + "t" + 1
**** "treeview1" + "n" + 4 "treeview1" + "t" + 1
**** "treeview1" + "n" + 5 "treeview1" + "t" + 1
**** "treeview1" + "n" + 6 "treeview1" + "t" + 1
**** "treeview1" + "n" + 7 "treeview1" + "t" + 1
**** "treeview1" + "n" + 0 "treeview1" + "t" + 0
--**** "treeview1" + "n" + 1 "treeview1" + "t" + 1
--**** "treeview1" + "n" + 2 "treeview1" + "t" + 1
----**** "treeview1" + "n" + 3 "treeview1" + "t" + 1
--**** "treeview1" + "n" + 4 "treeview1" + "t" + 1
**** "treeview1" + "n" + 5 "treeview1" + "t" + 1
--**** "treeview1" + "n" + 6 "treeview1" + "t" + 1
--**** "treeview1" + "n" + 7 "treeview1" + "t" + 1
//<asp:TreeView ID="treeView1" runat="server" ShowCheckBoxes="All" ShowLines="true" onclick="client_OnTreeNodeChecked();">
//使用类JTreeView时要包含 SysScript.js 文件
//
//function OnTreeNodeClientChecked( treeObj)
{
if( treeObj != null ) {
var id = treeObj.id;
var tree = new JTreeView(id);
tree.parentChecked();
}
}function OnTreeClearChecked( treeID) {
var tree = new JTreeView( treeID )
tree.clearChecked();
}function OnSelectSingleNode(treeID, node) {
alert(node.id);
var tree = new JTreeView( treeID )
tree.selectSingleNode(node.id);
}/*================================= 链接类 JTreeView{ ===================================*/
function JTreeView()
{
this.id = '';
}
function JTreeView( id ) {
this.id = id;
}JTreeView.prototype.initialize = function(id) {
this.id = id;
}JTreeView.prototype.exists = function() {
if(this.id.isNullOrEmpty()){
alert('请给树对象赋值进行初始化!');
return false;
}
var treeViewObj = document.getElementById( this.id );
if(treeViewObj == null ) {
alert('系统不能找到树!');
return false;
}
return true;
}JTreeView.prototype.clearChecked = function() { //clear all checked = 'true' status, and the result is all status of these checkboxes is false
if(this.exists()) {
var treeViewObj = document.getElementById( this.id );
var tables = treeViewObj.getElementsByTagName("TABLE");
var tableNum = tables.length;
if(tableNum > 0) {
for(var i = 0; i < tableNum; ++i) {
var childTreeLevel = tables[i].rows[0].cells.length;
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
inputs[0].checked = false;
}
}
}
} JTreeView.prototype.selectNode = function ( nodeID ) {
if(this.exists()) {
var node = document.getElementById( nodeID ) ;
if(node != null) {
//find the parent object(TD) of the node
var parent = node.parentElement;
if(parent != null && parent.tagName == 'TD') {
var inputs = parent.getElementsByTagName("INPUT");
inputs[0].checked = true;
}
}
}
}JTreeView.prototype.selectSingleNode = function ( nodeID ) {
this.clearChecked();
this.selectNode(nodeID );
}JTreeView.prototype.parentChecked = function() { //parent node check event
var obj = window.event.srcElement;
var treeNodeFound = false;
var checkedState;
if (obj.tagName == "INPUT" && obj.type == "checkbox")
{
var treeNode = obj;
checkedState = treeNode.checked;
//查找checkBox所在的TABLE对象
do
{
obj = obj.parentElement;
}
while (obj.tagName != "TABLE")
//checkBox所在TABLE对象的属性 var parentTreeLevel = obj.rows[0].cells.length; //Table中的列数
var parentTreeNode = obj.rows[0].cells[0]; //Table中的第一列TD对象
var tables = obj.parentElement.getElementsByTagName("TABLE"); //查找此事件对象TABLE的同级及下级的TABLE对象
var numTables = tables.length; //Table总数
if (numTables >= 1)
{
for (i=0; i < numTables; i++)
{
if (tables[i] == obj)
{
treeNodeFound = true;
i++; //指针移动到下一个Table对象
if (i == numTables)
{
return;
}
}
if (treeNodeFound == true)
{
var childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel)
{
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
inputs[0].checked = checkedState;
}
else
{
return;
}
}
}
}
}
}/*================================= }链接类 JTreeView ===================================*/
<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 runat="server">
<title>客户端实现全选子节点</title>
<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 + ","
}
}
}
</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>
<%@ Page Language="C#" %>
<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">
<title>客户端实现全选子节点</title>
<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 )
{
s = checkboxs[i].nextSibling.href
if(s.indexOf("\\") == -1)
{
s = s.substr(0,s.lastIndexOf("'"))
s = s.substr(s.lastIndexOf("'")+2)
}
else
{
s = s.substr(s.lastIndexOf("\\") + 1,s.lastIndexOf("'") - s.lastIndexOf("\\") - 1)
}
checkNode.value += s + ","
}
}
alert("得到的value值为:\r\n" + 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" Value="AA">
<asp:TreeNode Text="ASP.NET技术" Value="11111111111111111111111">
<asp:TreeNode Text="缓存管理" Value="222222222"/>
<asp:TreeNode Text="状态管理" Value="33333"/>
<asp:TreeNode Text="导航控件" Value="444">
<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>
你给我得方法中,为啥有这样的情况,当我选择了两个根节点的时候,总会出项两次返回结果,第一个是我选中的第一个节点的value,第二个是我选中的两个节点的Value
干吗非要用javascript读取treeview数据啊。
treeview是服务器控件,每次点击都回去取数据的。
比如treeview是从数据库中某个表中提取出来的,那就简单了。直接把数据库中的数据直接在页面上生成一个javascript数组不就行了么。
然后直接取javascript数组中的数据多方便。