1.更新到asp.net2.0或以上,将Microsoft.Web.UI.TreeView更换为新的System.Web.UI.WebControls.TreeView

2.将UserId,UserType,ChildType拼接成字符串放在TreeNode value中,拼接格式如下: [Id];[Type];[ChildType]

for example:

TreeView1.Nodes.Add(new TreeNode("name1", "id1;ou;0"));
            TreeView1.Nodes.Add(new TreeNode("name2", "id2;ou;0"));
            TreeView1.Nodes.Add(new TreeNode("name3", "id3;ou;0"));
            TreeView1.Nodes.Add(new TreeNode("name4", "id4;ou;0"));
            TreeView1.Nodes.Add(new TreeNode("name5", "id5;ou;0"));
            TreeNode child1 = new TreeNode("child name1", "child id1;user;1");
            TreeView1.Nodes[].ChildNodes.Add(child1);
            TreeNode child11 = new TreeNode("child name2", "child id2;user;1");
            TreeView1.Nodes[].ChildNodes.Add(child11);

3. 引入TreeSelector <script type="text/javascript" src="TreeSelector.js"></script>

//function setTreeNodeExpanded -- TreeView attribute FullyExpand
var TreeSelector = {
    init: function (paramObj) {
        var clientId = paramObj.clientId;
        var onNodeDblClick = paramObj.onNodeDblClick;

        )
            return;

        var treeNodes = TreeSelector.getAllNodes(clientId);
        ; i < treeNodes.length; i++) {
            var node = treeNodes[i];
            , node.href.length - );
            node.href = "javascript:void(0)";
            ) {
                value = value.substring(value.lastIndexOf();
            }
            var values = value.split(";");
            var text = node.innerText;
            node.setAttribute(]);
            node.setAttribute("NodeText", text);
            node.setAttribute(]);
            node.setAttribute(]);
        }

        var treeview = document.getElementById(clientId);
        treeview.ondblclick = function () {
            var selectedNode = TreeSelector.getSelectedNode(clientId);
            if (selectedNode != null) {
                onNodeDblClick.apply(this, [selectedNode]);
            }
        }
    },

    getAllNodes: function (treeClientId) {
        var result = [];
        var treeview = document.getElementById(treeClientId);
        var treeLinks = treeview.getElementsByTagName("a");
        ; i < treeLinks.length; i++) {
            if (treeLinks[i].firstChild.tagName != "IMG")
                result.push(treeLinks[i]);
        }
        return result;
    },

    getSelectedNode: function (treeClientId) {
        var treeViewData = window[treeClientId + "_Data"];
        if (treeViewData.selectedNodeID != null && treeViewData.selectedNodeID.value != "") {
            return document.getElementById(treeViewData.selectedNodeID.value);
        }
    }
}

4.页面脚本

<script type="text/javascript">
        var tree = document.getElementById("<%=TreeView1.ClientID%>");
        var searchResultList = document.getElementById("<%=lbSelectTree.ClientID%>");
        var selectedList = document.getElementById("<%=lbSelected.ClientID%>");
        var _userId = document.getElementById("<%=txtUser.ClientID%>").value;
        ";
        var _selectType = document.getElementById("<%=txtSelectType.ClientID%>").value;

        window.onload = function () {
            releaseXML();
            TreeSelector.init({
                clientId: tree.id,
                onNodeDblClick: function (selectNode) {
                    addSelectedNodeToList(selectNode);
                }
            });

            searchResultList.ondblclick = function () {
                var SelectedID = searchResultList.options[searchResultList.selectedIndex].value;
                var SelectedText = searchResultList.options[searchResultList.selectedIndex].text;
                addSearchResultToList(SelectedText, SelectedID);
            }
        }

        function ShowTree() {
            document.getElementById("divTree").style.display = "";
            document.getElementById("divSelectTree").style.display = "none";
            document.getElementById("btnShowTree").style.display = "none";
        }

        function RemoveSelected() {
            )
                return;

            selectedList.options.remove(selectedList.selectedIndex);
        }

        function AllSelect() {
            if (_isSingle) {
                alert("只能进行单选!");
                return;
            }

            if (document.getElementById("divSelectTree").style.display == "none") {
                findAllNode();
            }
            else {
                ; k < searchResultList.length; k++) {
                    var SelectedID = searchResultList.options[k].value;
                    var SelectedText = searchResultList.options[k].text;
                    //SelectChildType = searchResultList.options[k].ChildType;
                    //if (UserID == "" || SelectChildType == "1") {
                    addSearchResultToList(SelectedText, SelectedID);
                }
            }
        }

        function RemoveAllSelected() {
            ) >= ) {
                selectedList.options.remove(k);
            }
        }

        function FindTreeNode() {
            ) >= ) {
                searchResultList.options.remove(k);
            }

            var key = document.getElementById("<%=txtkey.ClientID%>").value;
            if (key == "")
                return;

            var nodes = TreeSelector.getAllNodes(tree.id);
            ; i < nodes.length; i++) {
                var cNode = nodes[i];
                ) {
                    document.getElementById("divTree").style.display = "none";
                    document.getElementById("btnShowTree").style.display = "";
                    document.getElementById("divSelectTree").style.display = "";

                    var nowListName = getFullName(cNode.getAttribute("NodeType"), cNode.getAttribute("NodeText"));
                    searchResultList.options.add(new Option(nowListName.Trim(), cNode.getAttribute("NodeId")));
                }
            }
        }

        function GetXML() {
            ].txtIsMustSelect.value == ) {
                alert("必须选择一个!");
                return false;
            }

            var selectName = "";
            var ReturnXML = "<NewDataSet>";

            ; k < selectedList.length; k++) {
                var nowSelectType = "";
                var nowSelectID = selectedList.options[k].value;
                var nowSelectName = selectedList.options[k].text;
                ) {
                    nowSelectType = "user";
                }
                ) {
                    nowSelectType = "group";
                }
                ) {
                    nowSelectType = "role";
                }
                ) {
                    nowSelectType = "ou";
                }
                , nowSelectName.length - );
                ReturnXML += "<Table>";
                ReturnXML += "<Name>" + trueSelectName.Trim() + "</Name>";
                ReturnXML += "<ID>" + nowSelectID.Trim() + "</ID>";
                ReturnXML += "<Type>" + nowSelectType.Trim() + "</Type>";
                ReturnXML += "</Table>";
                selectName += trueSelectName.Trim() + ","
            }
            ReturnXML += "</NewDataSet>";
            ) {
                selectName = selectName.substr(, selectName.length - );
            }
            a[] = selectName;
            a[] = ReturnXML;
            Dialog.CloseAndReturn(a);
        }

        //取消窗口
        function CancelWindows() {
            Dialog.Close();
        }

        function UserSelectorOption(id, name, type) {
            this.ID = id;
            this.Name = name;
            this.Type = type;
        }

        function ParseDataSetXML(xml) {
            var options = [];
            var xmlDoc = GetXMLDocument(xml);
            if (xmlDoc) {
                var items = xmlDoc.selectNodes("/NewDataSet/Table");
                ; j < items.length; j++) {
                    var id = GetXMLNodeText(items[j].selectSingleNode("ID"));
                    var name = GetXMLNodeText(items[j].selectSingleNode("Name"));
                    var type = GetXMLNodeText(items[j].selectSingleNode("Type"));
                    options.push(new UserSelectorOption(id, name, type));
                }
            }
            return options;
        }

        String.prototype.Trim = function () {
            return this.replace(/^\s+|\s+$/g, "");
        }

        function releaseXML() {
            var nodeId;
            var nodeText;
            var nodeType;
            var nodeListName;
            var j;
            var GetInsertXML = window.dialogArguments;
            if (GetInsertXML == null)
                return;

            var items = ParseDataSetXML(GetInsertXML);
            ; j < items.length; j++) {
                nodeId = items[j].ID;
                nodeText = items[j].Name;
                nodeListName = getListName(item[j].Name, item[j].Type);
                selectedList.options.add(new Option(nodeListName, items[j].ID));
            }
        }

        function isListBoxID(nodeID) {
            var sel_len = selectedList.length;
            ) return false;

            ; j < sel_len; j++) {
                var sel_id = selectedList.options[j].value;
                if (sel_id == nodeID)
                    return true;
            }
            return false;
        }

        function getFullName(type, name) {
            var nodeFullName = "";
            switch (type) {
                case "ou":
                    nodeFullName = name + " [组 织]";
                    break;
                case "group":
                    nodeFullName = name + " [工作组]";
                    break;
                case "role":
                    nodeFullName = name + " [角 色]";
                    break;
                case "user":
                    nodeFullName = name + " [用 户]";
                    break;
                default:
                    nodeFullName = "";
                    break;
            }
            return nodeFullName;
        }

        function addSelectedNodeToList(node) {
            var name = node.getAttribute("NodeText");
            var type = node.getAttribute("NodeType");
            var childType = node.getAttribute("ChildNodeType");
            var nodeId = node.getAttribute("NodeId");
            ") {
                alert("非下属部门,不能选择!");
                return;
            }

            var nodeFullName = getFullName(type, name);
            addSelectedObjectToList(type, nodeFullName, nodeId);
        }

        function addSelectedObjectToList(type, name, id) {
            ) {
                alert("只能进行单选!");
                return;
            }

            if (isListBoxID(id)) return;

            , ) == " && type == "user") ||
               (_selectType.substr(, ) == " && type == "role") ||
               (_selectType.substr(, ) == " && type == "ou"))
                selectedList.options.add(new Option(name.Trim(), id));
        }

        function addSearchResultToList(text, id) {
            , text.length - );
            var type = "";

            )
                type = "user";
            )
                type = "group";
            )
                type = "role";
            )
                type = "ou";

            addSelectedObjectToList(type, text, id);
        }

        function findAllNode() {
            var nodes = TreeSelector.getAllNodes(tree.id);
            ; i < nodes.length; i++) {
                addSelectedNodeToList(nodes[i]);
            }
        }

        /*---- search tree ------*/

    </script>

UserSelector兼容的更多相关文章

  1. 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程

    读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...

  2. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

  3. APP多版本共存,服务端如何兼容?

    做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易.下面将带大家分析几种常见的情况和应对方式: 小改动或者新加功能的 这种 ...

  4. ie6 ie7 ie8 ie9兼容问题终极解决方案

    放下包袱,解决低版本兼容问题   这是一个老生常谈的问题,自然解决这个问题的方案也比较多,下面整理了一些解决方法: 1.强制使用高版本渲染模式. 强制使用Edge模式来解析网页代码 <meta ...

  5. H5嵌入原生开发小结----兼容安卓与ios的填坑之路

    一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...

  6. DOM getElementsByClassName IE兼容方案

    平时写HTML时多用class来命名,为很少用id来命名,主要原因就是class使用起来比较灵活. 但是万恶的JS在操作DOM的时候对ie6+只提供了getElementById和getElement ...

  7. 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决

    转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...

  8. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  9. 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)

    前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...

随机推荐

  1. centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课

    centos vmware centos6.6 64位 kvm虚拟化安装配置     第四十二节课 上半节课 下半节课 f

  2. python计算非内置数据类型占用内存

    getsizeof的局限 python非内置数据类型的对象无法用sys.getsizeof()获得真实的大小,例: import networkx as nx import sys G = nx.Gr ...

  3. iOS面试必看,最全梳理

    序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态 ...

  4. iOS - (调用系统本机发送短信功能)

    今天处理一个订单详情的界面,在订单详情页面上有联系方式(电话号码),在电话号码的右边有两图片,一个是电话样式的,一个是短信样式的,做为一名程序员(号称攻城师)一眼看下去就应该是一个 button,而不 ...

  5. UI-UIImageView的图片填充方式(contentMode)_图片作为控件背景图的拉伸方式(stretch)介绍

    常用图片填充方式 这里只介绍三个最常用的图片填充方式 UIViewContentModeScaleToFill模式会导致图片变形.例如: UIViewContentModeScaleAspectFit ...

  6. mantis 安装问题

    1. 邮件 修改 config_defaults_inc.php $g_administrator_email = 'mantis@pooy.net'; $g_webmaster_email = 'm ...

  7. python加密模块学习

    1. md5模块 md5.new([arg])     返回一个md5对象,如果给出参数,则相当于调用了update(arg) md5.update(arg)   用string参数arg更新md5对 ...

  8. docker note from UC blog

    -------------------------------------------------------------------------- original url http://tech. ...

  9. logistic regression的一些问题,不平衡数据,时间序列,求解惑

    Logistic Regression 1.在有时间序列的特征数据中,怎么运用LR? 不光是LR,其他的模型也是. 有很多基本的模型变形之后,变成带时序的模型.但,个人觉得,这类模型大多不靠谱. 我觉 ...

  10. 前端bower使用

    Bower是一个客户端技术的软件包管理器,是由twitter推出的.它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源.其他一些建立在Bower基础之上的开发工具,如Yeo ...