<link rel="stylesheet" type="text/css" href="/js/ext-2.3.0/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="/js/ext-2.3.0/resources/css/xtheme-gray.css" />
<script type="text/javascript" src="/js/ext-2.3.0/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="/js/ext-2.3.0/ext-all.js"></script>
<!-- Files needed for SwfUploaderPanel -->
<SCRIPT LANGUAGE="JavaScript">
var Tree_Dept;
var Tree_Dept_Loader;
var checkchange = false;
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = '/js/extjs/resources/images/default/s.gif';
//级联选择设置
var cascadeCheckBox = new Ext.form.Checkbox({
id: "cascadeBt",
boxLabel : '级联选择'
});
cascadeCheckBox.on('check', cascadeSelectSet);
// Define Tree.
Tree_Dept_Loader = new Ext.tree.TreeLoader({
baseParams:{"nodeids":'<%=nodeids%>'},
dataUrl :"DeptTreeData.jsp"
});
//lable 21409:具有创建权限的目录
Tree_Dept = new Ext.tree.TreePanel({
collapsible : false,
animCollapse : false,
border : true,
el :'tree',
autoScroll : true,
animate : false,
containerScroll : true,
height : 400,
rootVisible : true,
loader : Tree_Dept_Loader,
tbar: [{
id: "submit_button",
xtype:"button",
handler: onGetChecked,
text:"确定"
},{ //清除所有选中的部门节点
id: "clear_button",
xtype:"button",
handler: clearAll,
text:"清除所选项"
},{ //选中当前被选中的同层级的所有节点
id: "samelv_button",
xtype:"button",
handler: sameLvSelectSet,
text:"同层级全选"
},{ //重置
id: "reload_button",
xtype:"button",
handler: reloadData,
text:"重置"
},'-',cascadeCheckBox]
});
// SET the root node.
//lable 1478: 目录信息
//组织部门树
var Tree_Dept_Root = new Ext.tree.AsyncTreeNode({
text : '组织部门',
draggable : false,
id : 'root^-^0' //root main sub
});
Tree_Dept.setRootNode(Tree_Dept_Root);
Tree_Dept.on('checkchange', function(node, checked) {
node.attributes.checked = checked;
checkchange = true;
document.getElementById("selectid").value = node.id;
});
Tree_Dept.on('click', function(node, checked) {
if (node.attributes.checked == false)
{
node.ui.toggleCheck(true);
node.attributes.checked = true;
}
else
{
node.ui.toggleCheck(false);
node.attributes.checked = false;
}
document.getElementById("selectid").value = node.id;
});
Tree_Dept.on("expand", function(Tree_Dept){
var tobjs=Tree_Dept.getChecked();
if (tobjs.length > 0)
{
var node = tobjs[tobjs.length-1];
node.select();
}
});
Tree_Dept.render();
Tree_Dept_Root.expand();
});
function onGetChecked()
{
try
{
var nodeids="";
var actionids = "";
var nodenames = "";
var tobjs=Tree_Dept.getChecked();
for(var i = 0;i<tobjs.length;i++)
{
var obj = tobjs[i];
nodenames += (nodenames=="")?obj.text:(";"+obj.text);
var splitstr = "^-^";
var nodeid = obj.id;
var pos = nodeid.indexOf(splitstr);
if(pos!=-1)
{
var idsarray = nodeid.split(splitstr);
var type=idsarray[0];
var content=idsarray[1];
nodeids += (nodeids=="")?content:(","+content);
}
}
document.getElementById("nodenames").value=nodenames;
document.getElementById("nodeids").value=nodeids;
//document.getElementById("checkchange").value = "1";
//alert(nodenames);
//alert(nodeids);
}
catch(e)
{
}
}
function clearAll()
{
var tobjs=Tree_Dept.getChecked();
var node;
for(var i = 0;i<tobjs.length;i++)
{
var obj = tobjs[i];
var nodeid = obj.id;
node = Tree_Dept.getNodeById(nodeid);
node.ui.toggleCheck(false);
node.attributes.checked = false;
}
document.getElementById("selectid").value = "";
}
function sameLvSelectSet()
{
var currentid = document.getElementById("selectid").value;
if ("" == currentid || "undefined" == currentid)
{
alert("请选择一个部门!");
return;
}
var node = Tree_Dept.getNodeById(currentid);
var parentNode = node.parentNode;
parentNode.eachChild(function(child){
child.ui.toggleCheck(true);
child.attributes.checked = true;
});
}
function cascadeSelectSet(obj, checked)
{
if (checked)
{
Tree_Dept_Loader.dataUrl = "DeptTreeData.jsp?isCascade="+true;
}
else
{
Tree_Dept_Loader.dataUrl = "DeptTreeData.jsp?isCascade="+false;
}
}
function collapseAllSet()
{
Tree_Dept.collapseAll();
}
function reloadData()
{
Tree_Dept.getRootNode().reload();
}
function setFocus()
{
var tobjs=Tree_Dept.getChecked();
if (tobjs.length > 0)
{
var node = tobjs[tobjs.length-1];
node.select();
}
}
</script>
后台:
String nodeids=Util.null2String(request.getParameter("nodeids"));
String isCascade=Util.null2String(request.getParameter("isCascade"));
String node=Util.null2String(request.getParameter("node"));
String arrNode[]=Util.TokenizerString2(node,"^-^");
String type=arrNode[0];
String value=arrNode[1];
JSONArray jsonArrayReturn= new JSONArray();
if("root".equals(type)){ //主目录下的数据
rs.executeSql(".....");
String nodeId="";
String nodeName="";
String tempNodeId = "";
while(rs.next()){
nodeId=rs.getString("id");
nodeName=rs.getString("departmentname");
tempNodeId = "," + nodeId + ",";
JSONObject jsonTypeObj=new JSONObject();
jsonTypeObj.put("id","node^-^"+nodeId);
jsonTypeObj.put("text",nodeName);
jsonTypeObj.put("cls","folder");
jsonTypeObj.put("draggable",false);
jsonTypeObj.put("leaf",false);
jsonTypeObj.put("expanded",false);
jsonTypeObj.put("checked",false);
jsonArrayReturn.put(jsonTypeObj);
}
} else if ("node".equals(type)){
rs.executeSql("....");
String nodeId="";
String nodeName="";
String tempNodeId = "";
while(rs.next()){
nodeId=rs.getString("id");
nodeName=rs.getString("departmentname");
tempNodeId = "," + nodeId + ",";
JSONObject jsonTypeObj=new JSONObject();
jsonTypeObj.put("id","node^-^"+nodeId);
jsonTypeObj.put("text",nodeName);
jsonTypeObj.put("cls","folder");
jsonTypeObj.put("draggable",false);
jsonTypeObj.put("leaf",false);
jsonTypeObj.put("expanded",false);
if ("true".equals(isCascade)
jsonTypeObj.put("checked",true);
else
jsonTypeObj.put("checked",false);
jsonArrayReturn.put(jsonTypeObj);
}
}
out.println(jsonArrayReturn.toString());
<link rel="stylesheet" type="text/css" href="/js/ext-2.3.0/resources/css/xtheme-gray.css" />
<script type="text/javascript" src="/js/ext-2.3.0/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="/js/ext-2.3.0/ext-all.js"></script>
<!-- Files needed for SwfUploaderPanel -->
<SCRIPT LANGUAGE="JavaScript">
var Tree_Dept;
var Tree_Dept_Loader;
var checkchange = false;
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = '/js/extjs/resources/images/default/s.gif';
//级联选择设置
var cascadeCheckBox = new Ext.form.Checkbox({
id: "cascadeBt",
boxLabel : '级联选择'
});
cascadeCheckBox.on('check', cascadeSelectSet);
// Define Tree.
Tree_Dept_Loader = new Ext.tree.TreeLoader({
baseParams:{"nodeids":'<%=nodeids%>'},
dataUrl :"DeptTreeData.jsp"
});
//lable 21409:具有创建权限的目录
Tree_Dept = new Ext.tree.TreePanel({
collapsible : false,
animCollapse : false,
border : true,
el :'tree',
autoScroll : true,
animate : false,
containerScroll : true,
height : 400,
rootVisible : true,
loader : Tree_Dept_Loader,
tbar: [{
id: "submit_button",
xtype:"button",
handler: onGetChecked,
text:"确定"
},{ //清除所有选中的部门节点
id: "clear_button",
xtype:"button",
handler: clearAll,
text:"清除所选项"
},{ //选中当前被选中的同层级的所有节点
id: "samelv_button",
xtype:"button",
handler: sameLvSelectSet,
text:"同层级全选"
},{ //重置
id: "reload_button",
xtype:"button",
handler: reloadData,
text:"重置"
},'-',cascadeCheckBox]
});
// SET the root node.
//lable 1478: 目录信息
//组织部门树
var Tree_Dept_Root = new Ext.tree.AsyncTreeNode({
text : '组织部门',
draggable : false,
id : 'root^-^0' //root main sub
});
Tree_Dept.setRootNode(Tree_Dept_Root);
Tree_Dept.on('checkchange', function(node, checked) {
node.attributes.checked = checked;
checkchange = true;
document.getElementById("selectid").value = node.id;
});
Tree_Dept.on('click', function(node, checked) {
if (node.attributes.checked == false)
{
node.ui.toggleCheck(true);
node.attributes.checked = true;
}
else
{
node.ui.toggleCheck(false);
node.attributes.checked = false;
}
document.getElementById("selectid").value = node.id;
});
Tree_Dept.on("expand", function(Tree_Dept){
var tobjs=Tree_Dept.getChecked();
if (tobjs.length > 0)
{
var node = tobjs[tobjs.length-1];
node.select();
}
});
Tree_Dept.render();
Tree_Dept_Root.expand();
});
function onGetChecked()
{
try
{
var nodeids="";
var actionids = "";
var nodenames = "";
var tobjs=Tree_Dept.getChecked();
for(var i = 0;i<tobjs.length;i++)
{
var obj = tobjs[i];
nodenames += (nodenames=="")?obj.text:(";"+obj.text);
var splitstr = "^-^";
var nodeid = obj.id;
var pos = nodeid.indexOf(splitstr);
if(pos!=-1)
{
var idsarray = nodeid.split(splitstr);
var type=idsarray[0];
var content=idsarray[1];
nodeids += (nodeids=="")?content:(","+content);
}
}
document.getElementById("nodenames").value=nodenames;
document.getElementById("nodeids").value=nodeids;
//document.getElementById("checkchange").value = "1";
//alert(nodenames);
//alert(nodeids);
}
catch(e)
{
}
}
function clearAll()
{
var tobjs=Tree_Dept.getChecked();
var node;
for(var i = 0;i<tobjs.length;i++)
{
var obj = tobjs[i];
var nodeid = obj.id;
node = Tree_Dept.getNodeById(nodeid);
node.ui.toggleCheck(false);
node.attributes.checked = false;
}
document.getElementById("selectid").value = "";
}
function sameLvSelectSet()
{
var currentid = document.getElementById("selectid").value;
if ("" == currentid || "undefined" == currentid)
{
alert("请选择一个部门!");
return;
}
var node = Tree_Dept.getNodeById(currentid);
var parentNode = node.parentNode;
parentNode.eachChild(function(child){
child.ui.toggleCheck(true);
child.attributes.checked = true;
});
}
function cascadeSelectSet(obj, checked)
{
if (checked)
{
Tree_Dept_Loader.dataUrl = "DeptTreeData.jsp?isCascade="+true;
}
else
{
Tree_Dept_Loader.dataUrl = "DeptTreeData.jsp?isCascade="+false;
}
}
function collapseAllSet()
{
Tree_Dept.collapseAll();
}
function reloadData()
{
Tree_Dept.getRootNode().reload();
}
function setFocus()
{
var tobjs=Tree_Dept.getChecked();
if (tobjs.length > 0)
{
var node = tobjs[tobjs.length-1];
node.select();
}
}
</script>
后台:
String nodeids=Util.null2String(request.getParameter("nodeids"));
String isCascade=Util.null2String(request.getParameter("isCascade"));
String node=Util.null2String(request.getParameter("node"));
String arrNode[]=Util.TokenizerString2(node,"^-^");
String type=arrNode[0];
String value=arrNode[1];
JSONArray jsonArrayReturn= new JSONArray();
if("root".equals(type)){ //主目录下的数据
rs.executeSql(".....");
String nodeId="";
String nodeName="";
String tempNodeId = "";
while(rs.next()){
nodeId=rs.getString("id");
nodeName=rs.getString("departmentname");
tempNodeId = "," + nodeId + ",";
JSONObject jsonTypeObj=new JSONObject();
jsonTypeObj.put("id","node^-^"+nodeId);
jsonTypeObj.put("text",nodeName);
jsonTypeObj.put("cls","folder");
jsonTypeObj.put("draggable",false);
jsonTypeObj.put("leaf",false);
jsonTypeObj.put("expanded",false);
jsonTypeObj.put("checked",false);
jsonArrayReturn.put(jsonTypeObj);
}
} else if ("node".equals(type)){
rs.executeSql("....");
String nodeId="";
String nodeName="";
String tempNodeId = "";
while(rs.next()){
nodeId=rs.getString("id");
nodeName=rs.getString("departmentname");
tempNodeId = "," + nodeId + ",";
JSONObject jsonTypeObj=new JSONObject();
jsonTypeObj.put("id","node^-^"+nodeId);
jsonTypeObj.put("text",nodeName);
jsonTypeObj.put("cls","folder");
jsonTypeObj.put("draggable",false);
jsonTypeObj.put("leaf",false);
jsonTypeObj.put("expanded",false);
if ("true".equals(isCascade)
jsonTypeObj.put("checked",true);
else
jsonTypeObj.put("checked",false);
jsonArrayReturn.put(jsonTypeObj);
}
}
out.println(jsonArrayReturn.toString());