UserSelector兼容
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兼容的更多相关文章
- 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程
读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...
- JS图片上传预览插件制作(兼容到IE6)
其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...
- APP多版本共存,服务端如何兼容?
做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易.下面将带大家分析几种常见的情况和应对方式: 小改动或者新加功能的 这种 ...
- ie6 ie7 ie8 ie9兼容问题终极解决方案
放下包袱,解决低版本兼容问题 这是一个老生常谈的问题,自然解决这个问题的方案也比较多,下面整理了一些解决方法: 1.强制使用高版本渲染模式. 强制使用Edge模式来解析网页代码 <meta ...
- H5嵌入原生开发小结----兼容安卓与ios的填坑之路
一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...
- DOM getElementsByClassName IE兼容方案
平时写HTML时多用class来命名,为很少用id来命名,主要原因就是class使用起来比较灵活. 但是万恶的JS在操作DOM的时候对ie6+只提供了getElementById和getElement ...
- 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决
转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...
- CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)
前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
随机推荐
- [BS-25] IOS中手势UIGestureRecognizer概述
IOS中手势UIGestureRecognizer概述 一.概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)touches ...
- Vue.2.0.5-插件
开发插件 插件通常会为Vue添加全局功能.插件的范围没有限制--一般有下面几种: 添加全局方法或者属性,如: vue-element 添加全局资源:指令/过滤器/过渡等,如 vue-touch 通过全 ...
- Vue.2.0.5-表单控件绑定
基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以 ...
- 前端实战——前端效果accordition的实现
一.bootstrap实现 1)水平折叠组件 使用panel和collaspe组件 <!doctype html> <html lang="zh-hans"> ...
- 关于 0xCCCCCCCC
http://xingyunbaijunwei.blog.163.com/blog/static/76538067201281793111474/ http://stackoverflow.com/q ...
- SWIFT 闭包的简单使用二
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...
- spring消费RESTfull服务
使用RestTemplate做这件事非常简单 package hello; import org.slf4j.Logger; import org.slf4j.LoggerFactory; impor ...
- appcon 图标打包
ERROR ITMS-90022: "Missing required icon file. The bundle does not contain an app icon for iPho ...
- 学习OpenCV——粒子滤波(网上两篇文章总结)
粒子滤波的理论实在是太美妙了,用一组不同权重的随机状态来逼近复杂的概率密度函数.其再非线性.非高斯系统中具有优良的特性.opencv给出了一个实现,但是没有给出范例,学习过程中发现网络上也找不到.le ...
- Effective C++ 3.资源管理
//条款13:以对象管理资源 // 1.C++程序中最常使用的资源就是动态分配内存,并且还包括文件描述器,互斥锁,GDI对象.数据库连接.网络socket等.不管哪一种资源,当不再使用的时候必须将其归 ...