TreeView 控件 TreeNodeCheckChanged事件無法自動回發


如果直接使用TreeNodeCheckChanged 事件是無法自動回發的,就是不會馬上刷新頁面並且執行你相應的操作。

那麼我們可以通過腳本來控制事件回發,代碼如下:

JS 需要增加一個方法

   function TreeViewCheckBox_Click(e) {
        if (window.event == null)
            o = e.target;
        else
            o = window.event.srcElement;
        if (o.tagName == "INPUT" && o.type == "checkbox") {
            __doPostBack("", "");
        }
    } 
這個方法可以支持FF和IE,如果不傳E那麼將會不支持FF。


頁面樹控件增加Onclick點擊傳送 event

   <asp:TreeView ID="PermTreeView" runat="server" ExpandDepth="1" ShowLines="True" 
                        ShowCheckBoxes="All" BorderStyle="None" Height="400px" 
                        ontreenodecheckchanged="PermTreeView_TreeNodeCheckChanged"  οnclick="TreeViewCheckBox_Click(event)" >
                    </asp:TreeView>

服務端:

    protected void PermTreeView_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
    {
           TreeNodeCollection node = e.Node.ChildNodes;
           foreach (TreeNode item in node)
           {
               item.Checked = e.Node.Checked;
               CheckNode(item.ChildNodes,e.Node.Checked);
           }
           e.Node.ExpandAll();
         
    }


    public void CheckNode(TreeNodeCollection node,bool selected) 
    {
        foreach (TreeNode item in node)
        {
            item.Checked = selected;
            CheckNode(item.ChildNodes,selected);
        }
    }
最終效果:可以使你點擊父節點選中父節點下面全部子節點並且展開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章