解决TreeView中使用JavaScript完成CheckBox全选的办法

结这次的工作,明白了几个关键的地方:
1.JavaScript中的确可以直接引用.Net服务器端控件,但是问题在于,控件的ID在编译后会自动加上名字空间,所以这里要特别注意。
2.使用JavaScript可以使对TreeView的操作不需要再PostBack,十分方便有效。
3.空间状态的显示和实际存储是有区别的,一定要十分注意。
需要在C#文件中加入:
None.gif TreeView.Attributes.Add( " oncheck " " tree_oncheck() " );

主要的JavaScript代码如下:
None.gif < script language = " javascript " >
None.gif
<!--
None.gif
None.gif
function  tree_oncheck()
None.gif{
None.gif    
var  node  =  TreeView.getTreeNode(event.treeNodeIndex);
None.gif    
var  Pchecked  =  node.getAttribute( " checked " );
None.gif    setcheck(node, Pchecked);
None.gif    TreeView.queueEvent('oncheck', node.getNodeIndex());
None.gif}
None.gif
None.gif
function  setcheck(node, Pc)
None.gif{
None.gif    
var  ChildNode  =   new  Array();
None.gif    ChildNode 
=  node.getChildren();
None.gif    
if  (parseInt(ChildNode.length)  !=   0 )
None.gif    {
None.gif        
for  ( var  i  =   0 ; i  <  ChildNode.length; i ++ )
None.gif        {
None.gif            
var  cNode  =  ChildNode[i];
None.gif            
if  (cNode.getAttribute( " checked " !=  Pc)
None.gif            {
None.gif                
if  (parseInt(cNode.getChildren().length)  !=   0 )
None.gif                    setcheck(cNode, Pc);
None.gif                cNode.setAttribute(
" checked " , Pc);
None.gif                TreeView.queueEvent('oncheck', cNode.getNodeIndex());
None.gif            }
None.gif        }
None.gif    }
None.gif}
None.gif
None.gif
// -->
None.gif
</ script >

整个功能的实现需要修改微软treeview控件的一个Bug 
需要修改inetpub\wwwroot\webctrl_client\1_0\treeview.htc。
把function doCheckboxClick(el)中的第一行,
el.checked = !el.checked;
改成:
el.checked = !el.getAttribute("checked");

posted on 2004-07-15 14:38 Howard 阅读(3016) 评论(4)  编辑 收藏 引用 收藏至365Key 所属分类: 技术人生

24476.html?webview=1

评论

 re: 解决TreeView中使用JavaScript完成CheckBox全选的办法 2004-07-15 14:45

不知道这样的操作结果在服务器端是否可以正确获得,因为在实际的应用中曾经发生这样的状况,如果服务器端显式设置过checkbox的状态后,客户端的设置改变无法在服务器端获得     

 re: 解决TreeView中使用JavaScript完成CheckBox全选的办法 2004-07-15 15:06

我之前遇到的情况就是“客户端的设置改变无法在服务器端获得”,现在这个问题已经解决,所以我才整理这些代码。
但是有一点忘记加了,就是
微软的treeview控件有一个bug,在postback之后,再点击checkbox就会乱了。
需要修改inetpub\wwwroot\webctrl_client\1_0\treeview.htc。
把function doCheckboxClick(el)中的第一行,
el.checked = !el.checked;
改成:
el.checked = !el.getAttribute("checked");

十分感谢公司同时Neil Wang在此问题上对我的帮助
     

 re: 解决TreeView中使用JavaScript完成CheckBox全选的办法 2005-06-17 11:00

好象这样还是会存在问题
在大部分的时候是正常的

有些时候,会有客户端的显示和最终服务器端会有不一致的情况出现

问题原因暂时还没有找到

转载于:https://www.cnblogs.com/hzuIT/articles/473755.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值