关于treeview中checkbox选择的问题!!!!

outouka 2007-04-17 06:29:03
该treeview中节点的checkbox为显示。
在windows.forms开发中运用AfterCheck事件实现了,父节点被checked后,子节点自动也被checked。
代码如下:
Private Sub CheckAllChildNodes(ByVal treeNode As TreeNode, ByVal nodeChecked As Boolean)
Dim node As TreeNode
For Each node In treeNode.Nodes
node.Checked = nodeChecked
If node.Nodes.Count > 0 Then
Me.CheckAllChildNodes(node, nodeChecked)
End If
Next node
End Sub
注treDrName为treeview名字
Private Sub node_AfterCheck(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles treDrName.AfterCheck
If e.Action <> TreeViewAction.Unknown Then
If e.Node.Nodes.Count > 0 Then
Me.CheckAllChildNodes(e.Node, e.Node.Checked)
End If
End If
End Sub
以上代码的效果是,选中父节点的checkbox被checked,子结点中的checkbox也同时被checked。

现在我在windows.web(asp.net)中开发,运用OnTreeNodeCheckChanged事件,想实现同样的功能
asp的代码如下
<asp:TreeView ID="treDrName" runat="server" ShowCheckBoxes="All" EnableTheming="True" OnTreeNodeCheckChanged ="TreeView_CheckChanged"></asp:TreeView>
vb中代码如下
Protected Sub treDrName_TreeNodeCheckChanged(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles treDrName.TreeNodeCheckChanged
If e.Node.ChildNodes.Count > 0 Then
Me.CheckAllChildNodes(e.Node, e.Node.Checked)
End If
End Sub
#End Region

Private Sub CheckAllChildNodes(ByVal treeNode As TreeNode, ByVal nodeChecked As Boolean)
Dim node As TreeNode
For Each node In treeNode.ChildNodes
node.Checked = nodeChecked
If node.ChildNodes.Count > 0 Then
Me.CheckAllChildNodes(node, nodeChecked)
End If
Next node
End Sub
以上代码的效果是,选中父节点的checkbox被checked,子结点中的checkbox的状态没有变化,但是,点击一下父节点的名字,子节点的状态就被checked。

在asp开发中运用以上代码,没有实现和forms的同样效果,请教各位,有好方法吗,本人不胜感激!!!此地等候你的回答!!!谢谢!!!!
...全文
338 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
outouka 2007-04-19
  • 打赏
  • 举报
回复
function OnTreeNodeChecked()
{
var ele = window.event.srcElement;
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div==null)return;
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=ele.checked;
}
}
}


以上 代码 拷到前台有很多的错误啊 !!!!
outouka 2007-04-18
  • 打赏
  • 举报
回复
没有人知道吗????
outouka 2007-04-18
  • 打赏
  • 举报
回复
function OnTreeNodeChecked()
{
var ele = window.event.srcElement;
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div==null)return;
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=ele.checked;
}
}
}


以上 代码 拷到前台有很多的错误啊 !!!!
outouka 2007-04-18
  • 打赏
  • 举报
回复
function OnTreeNodeChecked()
{
var ele = window.event.srcElement;
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div==null)return;
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=ele.checked;
}
}
}


以上 代码 拷到前台有很多的错误啊 !!!!
babyrockxray 2007-04-18
  • 打赏
  • 举报
回复
或者手动调用__doPostBack来触发
http://blog.csdn.net/veryhappy/archive/2006/05/25/754627.aspx
babyrockxray 2007-04-18
  • 打赏
  • 举报
回复
treeview的OnTreeNodeCheckChanged事件不会自动触发
当复选框在两次向服务器发送之间更改状态时,才会引发 TreeNodeCheckChanged 事件
可以用js来实现
后台加上
treDrName.Attributes.Add("onclick", "OnTreeNodeChecked()");

前台:
<script>
function OnTreeNodeChecked()
{
var ele = window.event.srcElement;
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div==null)return;
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=ele.checked;
}
}
}
</script>
outouka 2007-04-17
  • 打赏
  • 举报
回复
对不起,asp的代码应该如下
<asp:TreeView ID="treDrName" runat="server" ShowCheckBoxes="All" EnableTheming="True"></asp:TreeView>

62,254

社区成员

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

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

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

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