)解決TreeView中使用JavaScript完成CheckBox全選的辦法

來源:互聯網
上載者:User
總結這次的工作,明白了幾個關鍵的地方:
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");

博主註:這篇文章講到的方法經本人試用會出錯,較完善的解決方案見 TreeView父子聯動效果保持節點狀態一致

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.