惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
G
Google Developers Blog
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
博客园 - 聂微东
V
Visual Studio Blog
博客园_首页
D
DataBreaches.Net
腾讯CDC
I
InfoQ
F
Fortinet All Blogs
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
C
Check Point Blog

博客园 - 尹合磊

用ObjectDataSource实现自定义分页的心得总结 如何:在 Calendar 控件中显示数据库中的选定日期 AddNew 方法创建可更新 Recordset 对象的新记录。 求一“从所有同类中排除某一类型”正则表达式? 按字节长度截取字符串(支持截取带HTML代码样式的字符串) ASP.NET2.0资料收藏 asp中通过一个全局方法来防止SQL注入式攻击 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Yahoo邮箱POP、SMTP服务器设置详解 关于前台调用后台事件__doPostBack函数 客户端触发Asp.net中服务端控件事件 marquee基本语法的全解释 SHTML 教程 SQL:以指定的次数重复字符表达式 JavaScript不间断连续图片滚动效果 Asp.net(C#)给图片加上水印效果 ASP.NET(C#)生成缩略图 ASP.NET中存取图片到数据库的示例 Data Access Application Block--使用存储过程,参数及事务
解决TreeView中使用JavaScript完成CheckBox全选的办法
尹合磊 · 2008-06-18 · via 博客园 - 尹合磊

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

TreeView.Attributes.Add("oncheck""tree_oncheck()");

主要的JavaScript代码如下:

<script language="javascript">
<!--

function tree_oncheck()
{
    
var node = TreeView.getTreeNode(event.treeNodeIndex);
    
var Pchecked = node.getAttribute("checked");
    setcheck(node, Pchecked);
    TreeView.queueEvent('oncheck', node.getNodeIndex());
}

function setcheck(node, Pc)
{
    
var ChildNode = new Array();
    ChildNode 
= node.getChildren();
    
if (parseInt(ChildNode.length) != 0)
    {
        
for (var i = 0; i < ChildNode.length; i++)
        {
            
var cNode = ChildNode[i];
            
if (cNode.getAttribute("checked"!= Pc)
            {
                
if (parseInt(cNode.getChildren().length) != 0)
                    setcheck(cNode, Pc);
                cNode.setAttribute(
"checked", Pc);
                TreeView.queueEvent('oncheck', cNode.getNodeIndex());
            }
        }
    }
}

//-->
</script>

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