jQuery easyUI tree来实现异步树。我在用action来实现异步时没有成功,post和get提交方式都试了的。最后我选择了用JSP页面的方法来实现异步,通过传不同的值来判断执行的SQL,从而返回不同的数据。我的action代码和JSP页面代码类似,就是不知道为什么action的方式不行、、、(有大神知道的,可以给我说说嘛!)
JSP页面部分代码
StringBuffer sql = new StringBuffer();
StringBuffer sb = new StringBuffer();
String pid = null == request.getParameter("pid") ? "" : request
.getParameter("pid");
String latnId = null == request.getParameter("latnId") ? ""
: request.getParameter("latnId");
String areaId = null == request.getParameter("areaId") ? ""
: request.getParameter("areaId");
String state = null == request.getParameter("state") ? ""
: request.getParameter("state");
String outlinkId = userInfo.getOutlinkId().toString();
sb.append("[");
if ("a".equals(pid)) {
sql.append(" select a_id id,a_name text ");
sql.append(" from agt_area t ");
sql.append(" where t.a_level=3 ");
List<Map<String, Object>> list = JdbcUtil
.getJdbcTemplate(
com.njtd.frame.util.SpringBeanUtil.Config.DATA_SOURCE_SC_BEAN_ID)
.queryForList(sql.toString());
for (Map<String, Object> map : list) {
sb.append("{\"id\":\"" + map.get("ID") + "\",\"text\":\""
+ map.get("TEXT") + "\",\"attributes\":\"" + "Area");
if("1".equals(state)){
sb.append("\",\"state\":\"" + "closed"
+ "\"},");
}else{
sb.append("\"},");
}
}
} else if ("Area".equals(pid)) {
sql.append(" select a_id id,a_name text ");
sql.append(" from agt_area t ");
sql.append(" where t.a_level=4 ");
sql.append(" and t.a_uper=" + latnId);
List<Map<String, Object>> list = JdbcUtil
.getJdbcTemplate(
com.njtd.frame.util.SpringBeanUtil.Config.DATA_SOURCE_SC_BEAN_ID)
.queryForList(sql.toString());
for (Map<String, Object> map : list) {
sb.append("{\"id\":\"" + map.get("ID") + "\",\"text\":\""
+ map.get("TEXT") + "\",\"attributes\":\"" + "Counties");
if("1".equals(state)){
sb.append("\",\"state\":\"" + "closed"
+ "\"},");
}else{
sb.append("\"},");
}
}
} else if ("Counties".equals(pid)) {
sql.append(" select k.branch_id id,k.name text ");
sql.append(" from agt_branch k ");
sql.append(" where k.area_id=" + areaId);
sql.append(" and k.agent_id in ( ");
sql.append(" select p.agent_id from agt_agent p connect by prior ");
sql.append(" p.agent_id=p.parent_agent_id ");
sql.append(" start with p.agent_id=" + outlinkId + ") ");
List<Map<String, Object>> list = JdbcUtil
.getJdbcTemplate(
com.njtd.frame.util.SpringBeanUtil.Config.DATA_SOURCE_SC_BEAN_ID)
.queryForList(sql.toString());
for (Map<String, Object> map : list) {
sb.append("{\"id\":\"" + map.get("ID") + "\",\"text\":\""
+ map.get("TEXT") + "\",\"attributes\":\"" + "wangdian"
+ "\"},");
}
}
sb.deleteCharAt(sb.length() - 1);
sb.append("]");
response.getWriter().write(sb.toString());
HTML页面部分代码
<input type="button" value="确定" οnclick="confirm();" />
<div id="showBranchInfoDiv">
<div>正在查询数据,请稍候...</div>
</div>
JavaScript部分代码
function findBranchId(){
$(document).progressDialog.showDialog("正在查询网点,请稍候...");//屏幕遮掩。。
showBranchInfoDiv();
$(document).progressDialog.hideDialog();//隐藏遮掩。
}
function confirm(){
var wangdian = '';
var nodes = $('#showBranchInfoDiv').tree('getChecked');
if(null!=nodes && nodes.length>0){
for(var i=0;i<nodes.length;i++){
if("wangdian" == nodes[i].attributes){
wangdian+=nodes[i].id;
wangdian+=",";
}
}
}
wangdian = wangdian.substring(0,wangdian.length-1);
window.parent.getWangdian(wangdian);
}
function showBranchInfoDiv(){
//一次性全部加载,通过action得到全部数据
/*$.ajax({
type: "POST",
url: "<%=path%>/rewardCheck/findAreaCountiesBranch.do",
dataType:"json",
success:function(dd){
$('#showBranchInfoDiv').tree({data:eval('{'+dd+'}'),checkbox:true,cascadeCheck:true});
},
error:function(){}
});*/
//错了
/*$('#showBranchInfoDiv').tree({
method:"get",
checkbox: true,
url: '<%=path%>/rewardCheck/findAreaData.do', //这是第一次加载树的url 加载根节点
onLoadSuccess:function(node,data){
alert(node+" --- "+data.length);
alert("onLoadSuccess");
},
onLoadError:function(arguments){
alert(arguments);
alert("onLoadError");
}
}); */
//异步加载,通过JSP页面来得到数据
$('#showBranchInfoDiv').tree({
checkbox: true,
url: '<%=path%>/view/rewardCheck/data.jsp?pid=a&state=1', //这是第一次加载树的url 加载根节点
onBeforeExpand:function(node){
if("Area"==node.attributes){
$("#showBranchInfoDiv").tree('options').url='<%=path%>/view/rewardCheck/data.jsp?pid=Area&state=1&latnId='+node.id; //这是点击根节点的时候发送请求去加载子节点
}else if("Counties"==node.attributes){
$("#showBranchInfoDiv").tree('options').url='<%=path%>/view/rewardCheck/data.jsp?pid=Counties&state=1&areaId='+node.id; //这是点击根节点的时候发送请求去加载子节点
}
}
}); }