`

ExtJs checkbox树

    博客分类:
  • Ext
ext 
阅读更多
<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());
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics