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菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
随机推荐
- ZOOKEEPER解惑
现在网上关于ZooKeeper的文章很多,有介绍Leader选举算法的,有介绍ZooKeeper Server内部原理的,还有介绍ZooKeeper Client的.本文不打算再写类似的内容,而专注与 ...
- LIB和DLL的区别与使用
转这篇文章是因为以前有个误区,以为lib为静态库,dll为动态库,这理解并不错,但不全面.lib分两种的:(1) lib包含所有内容的静态库,应用程序用它即可,这是我理解的一种(2) lib只包含头部 ...
- [转] 被遗忘的Logrotate
FROM : http://huoding.com/2013/04/21/246 我发现很多人的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相 ...
- myeclipse里装svn插件
找到myeclipse的安装目录下的dropins文件夹,在该文件夹中建立一个新的文件夹SVN,将下载的site-1.8.16.zip解压下的东西放在该文件夹中.再打开myeclipse,import ...
- linux:网络yum源和制作本地光盘yum源
linux:存放yum源的位置:/etc/yum.repos.d/,该目录下全是一些yum源 一.网络yum源: 如图:下面全部都是yum源,后缀是".repo"都是合法的yum源 ...
- swift语言实战晋级-1 Swift开发环境的搭建
想要进行Swift的学习,必须要有个开发环境.简单的说就是装好了Xcode的Mac系统.那么接下来我们就简单了解一下这方面的内容. 1.1 下载Xcode Xcode是苹果公司出的编程工具,类似于微软 ...
- java 读取Excel文件并数据持久化方法Demo
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...
- eclipse JAVA 类元素 快速添加set和get方法
鼠标在代码窗口,鼠标右键 然后选择如下图 然后在下面图中,选择需要个类的元素添加的set和get 选择好了点击OK,这样eclipse就自动生成get和set方法
- UVA 10891 Game of Sum(DP)
This is a two player game. Initially there are n integer numbers in an array and players A and B get ...
- CCF真题之最大矩形
201312-3 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6 ...